Compare commits

...

10 Commits

Author SHA1 Message Date
sk 1171f06cfe 竞技馆抽奖活动必中玩家开奖 2024-10-23 11:41:33 +08:00
sk 8b1ae79c9b no message 2024-10-23 10:57:50 +08:00
sk c8a39f2d1f 解决冲突 2024-10-23 10:56:07 +08:00
sk 52d3b46f6e 竞技馆抽奖活动 2024-10-23 10:53:40 +08:00
sk 19a85d0e7e 修改脚本 2024-10-22 17:18:49 +08:00
sk eff3cad970 竞技馆抽奖活动协议 2024-10-17 13:05:36 +08:00
sk aa42eb224c 解决冲突 2024-10-17 09:20:02 +08:00
sk 98289116a3 抽奖活动协议 2024-10-12 13:33:40 +08:00
sk 8e936336e8 no message 2024-10-12 09:43:36 +08:00
sk f918baed78 mongodb库升级包 2024-10-12 08:59:37 +08:00
80 changed files with 11431 additions and 7624 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@ _test
**/backup
/bin/*
!/bin/protoc*
/deploy/*
# Architecture specific extensions/prefixes
*.[568vq]

View File

@ -573,6 +573,7 @@ const (
ItemDiamondScore = 100012 //钻石积分
ItemIDClawdoll = 40003 // 娃娃卡
ItemDollCard = 40004 // 娃娃卡积分
ItemIDRoomCard = 40002 // 房卡
)
func ToItemId(id int32) int32 {
@ -869,3 +870,9 @@ const (
const (
PlayerFlagsGuideCustom = 1 << iota // 竞技馆引导页关闭状态
)
const (
LotteryStateOver = 1 // 抽奖结束
LotteryStateRun = 2 // 抽奖进行中
LotteryStateNoStart = 3 // 抽奖未开始
)

View File

@ -182,3 +182,19 @@ func GetMonthTimestamp() []int64 {
et := time.Date(year, month, 1, 0, 0, 0, 0, now.Location()).Unix()
return []int64{st, et}
}
// HMSToTime 将时分秒转换为今天的time
// h: 时
// m: 分
// s: 秒
func HMSToTime(h, m, s int) time.Time {
now := time.Now().Local()
year, month, day := now.Date()
return time.Date(year, month, day, h, m, s, 0, now.Location())
}
// IntToTime 将int转换为time
// n: 时*10000 + 分*100 + 秒
func IntToTime(n int) time.Time {
return HMSToTime(n/10000, n%10000/100, n%100)
}

Binary file not shown.

Binary file not shown.

View File

@ -191,6 +191,30 @@
"30008": 1
}
},
{
"Id": 29,
"Order": 6,
"Name": "周活跃任务",
"ActivityType": 2,
"TaskType": 14,
"TargetTimes": 900,
"FinishTimes": 1,
"Award": {
"30010": 1
}
},
{
"Id": 30,
"Order": 7,
"Name": "周活跃任务",
"ActivityType": 2,
"TaskType": 14,
"TargetTimes": 1250,
"FinishTimes": 1,
"Award": {
"73001": 1
}
},
{
"Id": 12,
"Order": 1,

View File

@ -11,5 +11,7 @@
"PermitAwardTitle": "{\"zh\":\"通行证排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}",
"PermitAward": "{\"zh\":\"恭喜您在上个赛季通行证排行中名次达到%v名排行奖励已发放请查收\",\"vi\":\"Chúc mừng bạn đã đạt được %v trong bảng xếp hạng vượt qua. Phần thưởng xếp hạng đã được phân phối, vui lòng kiểm tra.\",\"en\":\"Congratulations on reaching %vth place in the pass ranking. Ranking rewards have been issued. Please check.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈានដល់ចំណាត់ថ្នាក់ទី %v ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}",
"UpgradeTitle": "{\"zh\":\"更新奖励\",\"vi\":\"Phần thưởng cập nhật\",\"en\":\"Update Rewards\",\"kh\":\"រង្វាន់ដំឡើង\"}",
"Upgrade": "{\"zh\":\"感谢您更新客户端,更新奖励已发放至附近,请注意查收\",\"vi\":\"Cảm ơn bạn đã cập nhật ứng dụng khách. Phần thưởng cập nhật đã được phân phối gần đó, vui lòng chú ý kiểm tra nhận\",\"en\":\"Thank you for updating the client. The update reward has been distributed to everyone. Please check it carefully.\",\"kh\":\"អរគុណសម្រាប់ការធ្វើបច្ចុប្បន្នភាពហ្គេម។ រង្វាន់នៃការធ្វើបច្ចុប្បន្នភាពត្រូវបានចែកចាយទៅគ្រប់គ្នា។ សូមពិនិត្យអោយបានច្បាស់លាស់។\"}"
"Upgrade": "{\"zh\":\"感谢您更新客户端,更新奖励已发放至附近,请注意查收\",\"vi\":\"Cảm ơn bạn đã cập nhật ứng dụng khách. Phần thưởng cập nhật đã được phân phối gần đó, vui lòng chú ý kiểm tra nhận\",\"en\":\"Thank you for updating the client. The update reward has been distributed to everyone. Please check it carefully.\",\"kh\":\"អរគុណសម្រាប់ការធ្វើបច្ចុប្បន្នភាពហ្គេម។ រង្វាន់នៃការធ្វើបច្ចុប្បន្នភាពត្រូវបានចែកចាយទៅគ្រប់គ្នា។ សូមពិនិត្យអោយបានច្បាស់លាស់។\"}",
"LotteryTitle": "{\"zh\":\"玩游戏抽奖品\",\"vi\":\"Chơi game rút thưởng\",\"en\":\"Play games, draw prizes\",\"kh\":\"លេងហ្គេម ចាប់រង្វាន់\"}",
"Lottery": "{\"zh\":\"恭喜您在好友房玩游戏抽奖品活动中获得了大奖,奖品随邮件发放,请注意查收\",\"vi\":\"Chúc mừng bạn đã trúng giải thưởng lớn trong hoạt động rút thưởng trò chơi tại phòng bạn bè. Giải thưởng sẽ được gửi qua email, vui lòng kiểm tra cẩn thận.\",\"en\":\"Congratulations on winning the grand prize in the lucky draw activity in the friend room. The prize will be sent via email, please check it carefully.\",\"kh\":\"សូមអបអរសាទរចំពោះការឈ្នះរង្វាន់ធំក្នុងសកម្មភាពចាប់រង្វាន់ក្នុងបន្ទប់មិត្តភ័ក្តិរបស់អ្នក រង្វាន់នឹងត្រូវបានផ្ញើតាមអ៊ីម៉ែល សូមពិនិត្យមើលវាដោយយកចិត្តទុកដាក់។\"}"
}

36
db/export.go Normal file
View File

@ -0,0 +1,36 @@
package db
import (
"errors"
"net"
"google.golang.org/grpc"
"mongo.games.com/goserver/core/logger"
)
var GrpcServer *grpc.Server
var GrpcClientConn *grpc.ClientConn
func RunGrpcServer() {
GrpcServer = grpc.NewServer()
registerGrpcServer()
ln, err := net.Listen("tcp", ":8899")
if err != nil {
panic(errors.New("db grpc failed to listen: " + err.Error()))
}
err = GrpcServer.Serve(ln)
if err != nil {
panic(errors.New("db grpc failed to serve: " + err.Error()))
}
logger.Logger.Infof("db grpc start success")
}
func NewGrpcClientConn() {
var err error
GrpcClientConn, err = grpc.NewClient("localhost:8899", grpc.WithInsecure())
if err != nil {
panic(errors.New("db grpc failed to dial: " + err.Error()))
}
registerGrpcClient()
}

16
db/gen_rpc.bat Normal file
View File

@ -0,0 +1,16 @@
set work_path=%cd%
set proto_path=%work_path%\proto
set protoc=%work_path%\..\bin\protoc-3.19.4-win64\bin\protoc.exe
set protoc-gen-go-plugin-path="%work_path%\..\bin\protoc-gen-go.exe"
set protoc-gen-go-grpc-plugin-path="%work_path%\..\bin\protoc-gen-go-grpc.exe"
rem echo %protoc3%
cd %proto_path%
for /d %%s in (,*) do (
cd %%s
for %%b in (,*.proto) do (
%protoc% --proto_path=%GOPATH%\src\mongo.games.com\game\db\proto --proto_path=. --plugin=protoc-gen-go=%protoc-gen-go-plugin-path% --plugin=protoc-gen-go-grpc=%protoc-gen-go-grpc-plugin-path% --go_out=%GOPATH%\src --go-grpc_out=%GOPATH%\src %%b
)
cd ..
)
cd %work_path%

34
db/model/lottery.go Normal file
View File

@ -0,0 +1,34 @@
package model
import (
"context"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/db/proto/lottery"
)
// 竞技馆抽奖记录
type Lottery struct {
Ts int64 // 中奖时间
SnId int32 // 玩家id
Name string // 玩家昵称
Number int64 // 中奖号码
Award map[int32]int64 // 奖品key为奖品idvalue为奖品数量
Video string // 视频地址
}
type LotteryServer struct {
lottery.UnimplementedLotteryServerServer
}
func (l *Lottery) Save(ctx context.Context, req *lottery.SaveReq) (*lottery.SaveRsp, error) {
logger.Logger.Infof("Lottery Save: %v", req)
return nil, nil
}
func (l *Lottery) Find(ctx context.Context, req *lottery.FindReq) (*lottery.FindRsp, error) {
logger.Logger.Infof("Lottery Find: %v", req)
return nil, nil
}

View File

@ -0,0 +1,448 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1-devel
// protoc v3.19.4
// source: lottery.proto
package lottery
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
public "mongo.games.com/game/db/proto/public"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type Lottery struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 中奖时间
SnId int32 `protobuf:"varint,2,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
Name string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家昵称
Number int64 `protobuf:"varint,4,opt,name=Number,proto3" json:"Number,omitempty"` // 中奖号码
Award []*public.Item `protobuf:"bytes,5,rep,name=Award,proto3" json:"Award,omitempty"` // 奖品key为奖品idvalue为奖品数量
}
func (x *Lottery) Reset() {
*x = Lottery{}
if protoimpl.UnsafeEnabled {
mi := &file_lottery_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Lottery) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Lottery) ProtoMessage() {}
func (x *Lottery) ProtoReflect() protoreflect.Message {
mi := &file_lottery_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Lottery.ProtoReflect.Descriptor instead.
func (*Lottery) Descriptor() ([]byte, []int) {
return file_lottery_proto_rawDescGZIP(), []int{0}
}
func (x *Lottery) GetTs() int64 {
if x != nil {
return x.Ts
}
return 0
}
func (x *Lottery) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *Lottery) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *Lottery) GetNumber() int64 {
if x != nil {
return x.Number
}
return 0
}
func (x *Lottery) GetAward() []*public.Item {
if x != nil {
return x.Award
}
return nil
}
//客户端发送给服务端
type SaveReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *SaveReq) Reset() {
*x = SaveReq{}
if protoimpl.UnsafeEnabled {
mi := &file_lottery_proto_msgTypes[1]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SaveReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SaveReq) ProtoMessage() {}
func (x *SaveReq) ProtoReflect() protoreflect.Message {
mi := &file_lottery_proto_msgTypes[1]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use SaveReq.ProtoReflect.Descriptor instead.
func (*SaveReq) Descriptor() ([]byte, []int) {
return file_lottery_proto_rawDescGZIP(), []int{1}
}
func (x *SaveReq) GetName() string {
if x != nil {
return x.Name
}
return ""
}
//服务端返回给客户端
type SaveRsp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
}
func (x *SaveRsp) Reset() {
*x = SaveRsp{}
if protoimpl.UnsafeEnabled {
mi := &file_lottery_proto_msgTypes[2]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SaveRsp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SaveRsp) ProtoMessage() {}
func (x *SaveRsp) ProtoReflect() protoreflect.Message {
mi := &file_lottery_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 SaveRsp.ProtoReflect.Descriptor instead.
func (*SaveRsp) Descriptor() ([]byte, []int) {
return file_lottery_proto_rawDescGZIP(), []int{2}
}
func (x *SaveRsp) GetMsg() string {
if x != nil {
return x.Msg
}
return ""
}
//客户端发送给服务端
type FindReq struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
func (x *FindReq) Reset() {
*x = FindReq{}
if protoimpl.UnsafeEnabled {
mi := &file_lottery_proto_msgTypes[3]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindReq) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindReq) ProtoMessage() {}
func (x *FindReq) ProtoReflect() protoreflect.Message {
mi := &file_lottery_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 FindReq.ProtoReflect.Descriptor instead.
func (*FindReq) Descriptor() ([]byte, []int) {
return file_lottery_proto_rawDescGZIP(), []int{3}
}
func (x *FindReq) GetName() string {
if x != nil {
return x.Name
}
return ""
}
//服务端返回给客户端
type FindRsp struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Msg string `protobuf:"bytes,1,opt,name=msg,proto3" json:"msg,omitempty"`
}
func (x *FindRsp) Reset() {
*x = FindRsp{}
if protoimpl.UnsafeEnabled {
mi := &file_lottery_proto_msgTypes[4]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *FindRsp) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*FindRsp) ProtoMessage() {}
func (x *FindRsp) ProtoReflect() protoreflect.Message {
mi := &file_lottery_proto_msgTypes[4]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use FindRsp.ProtoReflect.Descriptor instead.
func (*FindRsp) Descriptor() ([]byte, []int) {
return file_lottery_proto_rawDescGZIP(), []int{4}
}
func (x *FindRsp) GetMsg() string {
if x != nil {
return x.Msg
}
return ""
}
var File_lottery_proto protoreflect.FileDescriptor
var file_lottery_proto_rawDesc = []byte{
0x0a, 0x0d, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
0x07, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x1a, 0x13, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7d, 0x0a,
0x07, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01,
0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x52, 0x06, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72,
0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63,
0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x22, 0x1d, 0x0a, 0x07,
0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x07, 0x53,
0x61, 0x76, 0x65, 0x52, 0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20,
0x01, 0x28, 0x09, 0x52, 0x03, 0x6d, 0x73, 0x67, 0x22, 0x1d, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64,
0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x1b, 0x0a, 0x07, 0x46, 0x69, 0x6e, 0x64, 0x52,
0x73, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x6d, 0x73, 0x67, 0x32, 0x6b, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53,
0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2c, 0x0a, 0x04, 0x53, 0x61, 0x76, 0x65, 0x12, 0x10, 0x2e,
0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x65, 0x71, 0x1a,
0x10, 0x2e, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x53, 0x61, 0x76, 0x65, 0x52, 0x73,
0x70, 0x22, 0x00, 0x12, 0x2c, 0x0a, 0x04, 0x46, 0x69, 0x6e, 0x64, 0x12, 0x10, 0x2e, 0x6c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x1a, 0x10, 0x2e,
0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x2e, 0x46, 0x69, 0x6e, 0x64, 0x52, 0x73, 0x70, 0x22,
0x00, 0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73,
0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x2f, 0x6c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
}
var (
file_lottery_proto_rawDescOnce sync.Once
file_lottery_proto_rawDescData = file_lottery_proto_rawDesc
)
func file_lottery_proto_rawDescGZIP() []byte {
file_lottery_proto_rawDescOnce.Do(func() {
file_lottery_proto_rawDescData = protoimpl.X.CompressGZIP(file_lottery_proto_rawDescData)
})
return file_lottery_proto_rawDescData
}
var file_lottery_proto_msgTypes = make([]protoimpl.MessageInfo, 5)
var file_lottery_proto_goTypes = []interface{}{
(*Lottery)(nil), // 0: lottery.Lottery
(*SaveReq)(nil), // 1: lottery.SaveReq
(*SaveRsp)(nil), // 2: lottery.SaveRsp
(*FindReq)(nil), // 3: lottery.FindReq
(*FindRsp)(nil), // 4: lottery.FindRsp
(*public.Item)(nil), // 5: public.Item
}
var file_lottery_proto_depIdxs = []int32{
5, // 0: lottery.Lottery.Award:type_name -> public.Item
1, // 1: lottery.LotteryServer.Save:input_type -> lottery.SaveReq
3, // 2: lottery.LotteryServer.Find:input_type -> lottery.FindReq
2, // 3: lottery.LotteryServer.Save:output_type -> lottery.SaveRsp
4, // 4: lottery.LotteryServer.Find:output_type -> lottery.FindRsp
3, // [3:5] is the sub-list for method output_type
1, // [1:3] is the sub-list for method input_type
1, // [1:1] is the sub-list for extension type_name
1, // [1:1] is the sub-list for extension extendee
0, // [0:1] is the sub-list for field type_name
}
func init() { file_lottery_proto_init() }
func file_lottery_proto_init() {
if File_lottery_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_lottery_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Lottery); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_lottery_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SaveReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_lottery_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SaveRsp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_lottery_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindReq); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_lottery_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*FindRsp); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_lottery_proto_rawDesc,
NumEnums: 0,
NumMessages: 5,
NumExtensions: 0,
NumServices: 1,
},
GoTypes: file_lottery_proto_goTypes,
DependencyIndexes: file_lottery_proto_depIdxs,
MessageInfos: file_lottery_proto_msgTypes,
}.Build()
File_lottery_proto = out.File
file_lottery_proto_rawDesc = nil
file_lottery_proto_goTypes = nil
file_lottery_proto_depIdxs = nil
}

View File

@ -0,0 +1,28 @@
syntax = "proto3";
package lottery;
option go_package = "mongo.games.com/game/db/proto/lottery";
service LotteryServer {
rpc Save (SaveReq) returns (SaveRsp){}
rpc Find (FindReq) returns (FindRsp){}
}
//
message SaveReq {
string name = 1 ;
}
//
message SaveRsp {
string msg = 1 ;
}
//
message FindReq {
string name = 1 ;
}
//
message FindRsp {
string msg = 1 ;
}

View File

@ -0,0 +1,146 @@
// Code generated by protoc-gen-go-grpc. DO NOT EDIT.
// versions:
// - protoc-gen-go-grpc v1.3.0
// - protoc v3.19.4
// source: lottery.proto
package lottery
import (
context "context"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
)
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
// Requires gRPC-Go v1.32.0 or later.
const _ = grpc.SupportPackageIsVersion7
const (
LotteryServer_Save_FullMethodName = "/lottery.LotteryServer/Save"
LotteryServer_Find_FullMethodName = "/lottery.LotteryServer/Find"
)
// LotteryServerClient is the client API for LotteryServer service.
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.
type LotteryServerClient interface {
Save(ctx context.Context, in *SaveReq, opts ...grpc.CallOption) (*SaveRsp, error)
Find(ctx context.Context, in *FindReq, opts ...grpc.CallOption) (*FindRsp, error)
}
type lotteryServerClient struct {
cc grpc.ClientConnInterface
}
func NewLotteryServerClient(cc grpc.ClientConnInterface) LotteryServerClient {
return &lotteryServerClient{cc}
}
func (c *lotteryServerClient) Save(ctx context.Context, in *SaveReq, opts ...grpc.CallOption) (*SaveRsp, error) {
out := new(SaveRsp)
err := c.cc.Invoke(ctx, LotteryServer_Save_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *lotteryServerClient) Find(ctx context.Context, in *FindReq, opts ...grpc.CallOption) (*FindRsp, error) {
out := new(FindRsp)
err := c.cc.Invoke(ctx, LotteryServer_Find_FullMethodName, in, out, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// LotteryServerServer is the server API for LotteryServer service.
// All implementations must embed UnimplementedLotteryServerServer
// for forward compatibility
type LotteryServerServer interface {
Save(context.Context, *SaveReq) (*SaveRsp, error)
Find(context.Context, *FindReq) (*FindRsp, error)
mustEmbedUnimplementedLotteryServerServer()
}
// UnimplementedLotteryServerServer must be embedded to have forward compatible implementations.
type UnimplementedLotteryServerServer struct {
}
func (UnimplementedLotteryServerServer) Save(context.Context, *SaveReq) (*SaveRsp, error) {
return nil, status.Errorf(codes.Unimplemented, "method Save not implemented")
}
func (UnimplementedLotteryServerServer) Find(context.Context, *FindReq) (*FindRsp, error) {
return nil, status.Errorf(codes.Unimplemented, "method Find not implemented")
}
func (UnimplementedLotteryServerServer) mustEmbedUnimplementedLotteryServerServer() {}
// UnsafeLotteryServerServer may be embedded to opt out of forward compatibility for this service.
// Use of this interface is not recommended, as added methods to LotteryServerServer will
// result in compilation errors.
type UnsafeLotteryServerServer interface {
mustEmbedUnimplementedLotteryServerServer()
}
func RegisterLotteryServerServer(s grpc.ServiceRegistrar, srv LotteryServerServer) {
s.RegisterService(&LotteryServer_ServiceDesc, srv)
}
func _LotteryServer_Save_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(SaveReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LotteryServerServer).Save(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LotteryServer_Save_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LotteryServerServer).Save(ctx, req.(*SaveReq))
}
return interceptor(ctx, in, info, handler)
}
func _LotteryServer_Find_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(FindReq)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(LotteryServerServer).Find(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: LotteryServer_Find_FullMethodName,
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(LotteryServerServer).Find(ctx, req.(*FindReq))
}
return interceptor(ctx, in, info, handler)
}
// LotteryServer_ServiceDesc is the grpc.ServiceDesc for LotteryServer service.
// It's only intended for direct use with grpc.RegisterService,
// and not to be introspected or modified (even as a copy)
var LotteryServer_ServiceDesc = grpc.ServiceDesc{
ServiceName: "lottery.LotteryServer",
HandlerType: (*LotteryServerServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "Save",
Handler: _LotteryServer_Save_Handler,
},
{
MethodName: "Find",
Handler: _LotteryServer_Find_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "lottery.proto",
}

View File

@ -0,0 +1,151 @@
// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// protoc-gen-go v1.27.1-devel
// protoc v3.19.4
// source: public.proto
package public
import (
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
reflect "reflect"
sync "sync"
)
const (
// Verify that this generated code is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
// Verify that runtime/protoimpl is sufficiently up-to-date.
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)
type Item struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // id
Num int64 `protobuf:"varint,2,opt,name=Num,proto3" json:"Num,omitempty"` // 数量
}
func (x *Item) Reset() {
*x = Item{}
if protoimpl.UnsafeEnabled {
mi := &file_public_proto_msgTypes[0]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *Item) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*Item) ProtoMessage() {}
func (x *Item) ProtoReflect() protoreflect.Message {
mi := &file_public_proto_msgTypes[0]
if protoimpl.UnsafeEnabled && x != nil {
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
if ms.LoadMessageInfo() == nil {
ms.StoreMessageInfo(mi)
}
return ms
}
return mi.MessageOf(x)
}
// Deprecated: Use Item.ProtoReflect.Descriptor instead.
func (*Item) Descriptor() ([]byte, []int) {
return file_public_proto_rawDescGZIP(), []int{0}
}
func (x *Item) GetId() int32 {
if x != nil {
return x.Id
}
return 0
}
func (x *Item) GetNum() int64 {
if x != nil {
return x.Num
}
return 0
}
var File_public_proto protoreflect.FileDescriptor
var file_public_proto_rawDesc = []byte{
0x0a, 0x0c, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06,
0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x22, 0x28, 0x0a, 0x04, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10,
0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d,
0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x64, 0x62, 0x2f, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x2f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
file_public_proto_rawDescOnce sync.Once
file_public_proto_rawDescData = file_public_proto_rawDesc
)
func file_public_proto_rawDescGZIP() []byte {
file_public_proto_rawDescOnce.Do(func() {
file_public_proto_rawDescData = protoimpl.X.CompressGZIP(file_public_proto_rawDescData)
})
return file_public_proto_rawDescData
}
var file_public_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
var file_public_proto_goTypes = []interface{}{
(*Item)(nil), // 0: public.Item
}
var file_public_proto_depIdxs = []int32{
0, // [0:0] is the sub-list for method output_type
0, // [0:0] is the sub-list for method input_type
0, // [0:0] is the sub-list for extension type_name
0, // [0:0] is the sub-list for extension extendee
0, // [0:0] is the sub-list for field type_name
}
func init() { file_public_proto_init() }
func file_public_proto_init() {
if File_public_proto != nil {
return
}
if !protoimpl.UnsafeEnabled {
file_public_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*Item); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
}
type x struct{}
out := protoimpl.TypeBuilder{
File: protoimpl.DescBuilder{
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_public_proto_rawDesc,
NumEnums: 0,
NumMessages: 1,
NumExtensions: 0,
NumServices: 0,
},
GoTypes: file_public_proto_goTypes,
DependencyIndexes: file_public_proto_depIdxs,
MessageInfos: file_public_proto_msgTypes,
}.Build()
File_public_proto = out.File
file_public_proto_rawDesc = nil
file_public_proto_goTypes = nil
file_public_proto_depIdxs = nil
}

View File

@ -0,0 +1,10 @@
syntax = "proto3";
package public;
option go_package = "mongo.games.com/game/db/proto/public";
//
message Item {
int32 Id = 1; // id
int64 Num = 2; //
}

View File

21
db/register.go Normal file
View File

@ -0,0 +1,21 @@
package db
import (
"mongo.games.com/game/db/model"
"mongo.games.com/game/db/proto/lottery"
)
/*
grpc 服务端注册
*/
// registerGrpcServer 注册grpc服务
func registerGrpcServer() {
lottery.RegisterLotteryServerServer(GrpcServer, new(model.LotteryServer))
}
var LotteryClient lottery.LotteryServerClient
func registerGrpcClient() {
LotteryClient = lottery.NewLotteryServerClient(GrpcClientConn)
}

View File

@ -12,6 +12,7 @@ import (
_ "mongo.games.com/game"
"mongo.games.com/game/common"
"mongo.games.com/game/db"
_ "mongo.games.com/game/dbproxy/mq"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
@ -39,6 +40,10 @@ func main() {
log.Fatalln("rpc start fatal error: ", err)
}
go http.Serve(lis, nil)
// grpc 服务
go db.RunGrpcServer()
return nil
})
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {

View File

@ -0,0 +1,49 @@
package mq
import (
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/svc"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
func init() {
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.DBLotteryCode,
Data: &model.LotteryCode{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.LotteryCode)
if !ok {
return
}
c := svc.LotteryCodeCollection(log.Platform)
if c == nil {
return svc.LotteryCodeDBErr
}
if err = c.Insert(log); err != nil {
logger.Logger.Errorf("InsertLotteryCode error: %v", err)
return
}
return
},
})
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.DBLotteryLog,
Data: &model.LotteryLog{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.LotteryLog)
if !ok {
return
}
if err = svc.InsertLotteryLogs(log.Platform, log); err != nil {
logger.Logger.Errorf("InsertLotteryLogs error: %v", err)
}
mq.Write(&model.LotteryLog{Platform: log.Platform}, mq.RankLotteryLog)
return
},
})
}

View File

@ -0,0 +1,120 @@
package svc
import (
"errors"
"fmt"
"mongo.games.com/goserver/core/logger"
"net/rpc"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
)
var (
LotteryCodeDBErr = errors.New("log_lotterycode db open failed.")
)
func LotteryCodeCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.LotteryCodeDBName)
if s != nil {
c, first := s.DB().C(model.LotteryCodeCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"snid", "index"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"startts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-startts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"code"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"index"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-index"}, Background: true, Sparse: true})
}
return c
}
return nil
}
// UpsertLotteryCode 记录玩家抽奖活动开奖码
func UpsertLotteryCode(plt string, item *model.LotteryCode) (err error) {
c := LotteryCodeCollection(plt)
if c == nil {
return LotteryCodeDBErr
}
_, err = c.Upsert(bson.M{"snid": item.SnId, "cid": item.CId, "startts": item.StartTs}, item)
return
}
// GetLotteryCode 获取玩家抽奖活动开奖码
func GetLotteryCode(plt string, cid int64, startTs int64, code string) (*model.LotteryCode, error) {
c := LotteryCodeCollection(plt)
if c == nil {
return nil, LotteryCodeDBErr
}
var ret model.LotteryCode
err := c.Find(bson.M{"code": code, "cid": cid, "startts": startTs}).One(&ret)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return nil, err
}
return &ret, nil
}
type LotteryCodeSvc struct{}
func (svc *LotteryCodeSvc) Upsert(req *model.UpsertLotteryCodeReq, ret *bool) (err error) {
err = UpsertLotteryCode(req.Platform, req.Item)
*ret = err == nil
return
}
func (svc *LotteryCodeSvc) Get(req *model.GetLotteryCodeReq, resp *model.GetLotteryCodeResp) (err error) {
resp.Item, err = GetLotteryCode(req.Platform, req.CId, req.StartTs, req.Code)
return
}
func (svc *LotteryCodeSvc) GetJoinNum(req *model.GetLotteryCodeReq, resp *int) (err error) {
c := LotteryCodeCollection(req.Platform)
if c == nil {
return LotteryCodeDBErr
}
type m struct {
Count int64 `bson:"count"`
}
tc := new(m)
err = c.Pipe([]bson.M{
{"$match": bson.M{"snid": bson.M{"$gt": 0}, "cid": req.CId, "startts": req.StartTs}},
{"$group": bson.M{"_id": bson.M{"snid": "$snid"}, "count": bson.M{"$sum": "$count"}}},
}).AllowDiskUse().One(tc)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
logger.Logger.Warn("GetJoinNum error:", err)
return
}
*resp = int(tc.Count)
return nil
}
func (svc *LotteryCodeSvc) GetRandom(req *model.GetLotteryCodeRandomReq, ret *model.GetLotteryCodeResp) error {
c := LotteryCodeCollection(req.Platform)
if c == nil {
return LotteryCodeDBErr
}
where := bson.M{"cid": req.CId, "startts": req.StartTs}
switch req.Tp {
case 1:
where["snid"] = 0
where["index"] = req.Index
case 2:
where["code"] = fmt.Sprintf("%v", req.Index)
case 3:
where["snid"] = bson.M{"$gt": 0}
where["index"] = req.Index
}
if err := c.Find(where).One(&ret.Item); err != nil && !errors.Is(err, mgo.ErrNotFound) {
return err
}
return nil
}
func init() {
rpc.Register(new(LotteryCodeSvc))
}

View File

@ -0,0 +1,74 @@
package svc
import (
"errors"
"net/rpc"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
)
var (
LotteryDataDBErr = errors.New("log_lotterydata db open failed.")
)
func LotteryDataCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.LotteryDataDBName)
if s != nil {
c, first := s.DB().C(model.LotteryDataCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"startts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-startts"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func GetLotteryData(plt string) ([]*model.LotteryData, error) {
clog := LotteryDataCollection(plt)
if clog == nil {
return nil, LotteryDataDBErr
}
var logs []*model.LotteryData
err := clog.Find(nil).All(&logs)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return nil, err
}
return logs, nil
}
func UpsertLotteryData(plt string, arr []*model.LotteryData) error {
clog := LotteryDataCollection(plt)
if clog == nil {
return LotteryDataDBErr
}
for _, log := range arr {
_, err := clog.Upsert(bson.M{"cid": log.CId, "startts": log.StartTs}, log)
if err != nil {
return err
}
}
return nil
}
type LotteryDataSvc struct{}
func (s *LotteryDataSvc) Get(req *model.GetLotteryDataReq, reply *model.GetLotteryDataResp) (err error) {
reply.Data, err = GetLotteryData(req.Platform)
return
}
func (s *LotteryDataSvc) Upsert(req *model.UpsertLotteryDataReq, reply *bool) (err error) {
err = UpsertLotteryData(req.Platform, req.Data)
*reply = err == nil
return
}
func init() {
rpc.Register(new(LotteryDataSvc))
}

View File

@ -7,43 +7,41 @@ import (
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
)
var (
LotteryLogDBErr = errors.New("log_lottery db open failed.")
)
const LotteryLogMaxLimitPerQuery = 100
func LotteryLogsCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, model.LotteryLogDBName)
if s != nil {
c, first := s.DB().C(model.LotteryLogCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"gameid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"ctime"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-ctime"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"num"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"name"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"playernum"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"code"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"isrobot"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"ismust"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"ts"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-ts"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func InsertLotteryLog(log *model.LotteryLog) error {
err := LotteryLogsCollection(log.Platform).Insert(log)
if err != nil {
logger.Logger.Info("InsertLotteryLog error:", err)
return err
}
return nil
}
func InsertLotteryLogs(logs ...*model.LotteryLog) (err error) {
clog := LotteryLogsCollection(logs[0].Platform)
func InsertLotteryLogs(plt string, logs ...*model.LotteryLog) (err error) {
clog := LotteryLogsCollection(plt)
if clog == nil {
return
}
@ -66,41 +64,22 @@ func InsertLotteryLogs(logs ...*model.LotteryLog) (err error) {
return
}
func RemoveLotteryLog(plt string, ts time.Time) (*mgo.ChangeInfo, error) {
return LotteryLogsCollection(plt).RemoveAll(bson.M{"time": bson.M{"$lt": ts}})
}
func GetLotteryLogBySnidAndLessTs(plt string, id int32, ts time.Time) (ret []model.LotteryLog, err error) {
err = LotteryLogsCollection(plt).Find(bson.M{"snid": id, "time": bson.M{"$lt": ts}}).Limit(LotteryLogMaxLimitPerQuery).All(&ret)
return
}
type LotteryLogSvc struct {
}
func (svc *LotteryLogSvc) InsertLotteryLogs(args []*model.LotteryLog, ret *bool) (err error) {
err = InsertLotteryLogs(args...)
if err == nil {
*ret = true
func GetLotteryLogs(plt string, count int) (ret []*model.LotteryLog, err error) {
clog := LotteryLogsCollection(plt)
if clog == nil {
return nil, LotteryLogDBErr
}
err = clog.Find(bson.M{"ts": bson.M{"$lt": time.Now().Unix()}}).Sort("-ts").Limit(count).All(&ret)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return nil, err
}
return
}
func (svc *LotteryLogSvc) InsertLotteryLog(args *model.LotteryLog, ret *bool) (err error) {
err = InsertLotteryLog(args)
if err == nil {
*ret = true
}
return
}
type LotteryLogSvc struct{}
func (svc *LotteryLogSvc) RemoveLotteryLog(args *model.RemoveLotteryLogArgs, ret **mgo.ChangeInfo) (err error) {
*ret, err = RemoveLotteryLog(args.Plt, args.Ts)
return
}
func (svc *LotteryLogSvc) GetLotteryLogBySnidAndLessTs(args *model.GetLotteryLogBySnidAndLessTsArgs, ret *[]model.LotteryLog) (err error) {
*ret, err = GetLotteryLogBySnidAndLessTs(args.Plt, args.Id, args.Ts)
func (svc *LotteryLogSvc) GetLotteryLogs(req *model.GetLotteryLogReq, ret *model.GetLotteryLogResp) (err error) {
ret.LotteryLog, err = GetLotteryLogs(req.Platform, req.Num)
return
}

View File

@ -2,44 +2,63 @@ package svc
import (
"errors"
"net/rpc"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"mongo.games.com/game/dbproxy/mongo"
"mongo.games.com/game/model"
"mongo.games.com/goserver/core/logger"
"net/rpc"
)
var (
LotteryDBErr = errors.New("user_coinlog db open failed.")
)
func LotteryCollection() *mongo.Collection {
func LotteryCollection(plt string) *mongo.Collection {
s := mongo.MgoSessionMgrSington.GetPltMgoSession(mongo.G_P, model.LotteryDBName)
if s != nil {
c, first := s.DB().C(model.LotteryCollName)
if first {
c.EnsureIndex(mgo.Index{Key: []string{"platform"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"gamefreeid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"cid"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"time"}, Background: true, Sparse: true})
c.EnsureIndex(mgo.Index{Key: []string{"-time"}, Background: true, Sparse: true})
}
return c
}
return nil
}
func GetAllLottery() (ret []model.Lottery, err error) {
err = LotteryCollection().Find(nil).All(&ret)
func GetLottery(plt string, snid int32, cid int64, startts int64) (ret []*model.Lottery, err error) {
c := LotteryCollection(plt)
if c == nil {
return nil, LotteryDBErr
}
where := bson.M{"snid": snid}
if cid > 0 {
where["cid"] = cid
}
if startts > 0 {
where["startts"] = bson.M{"$gte": startts}
}
err = c.Find(where).All(&ret)
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
return nil, err
}
return
}
func UpsertLottery(item *model.Lottery) (err error) {
c := LotteryCollection()
func UpsertLottery(plt string, item []*model.Lottery) (err error) {
c := LotteryCollection(plt)
if c == nil {
return
return LotteryDBErr
}
_, err = c.UpsertId(item.Id, item)
if err != nil {
logger.Logger.Warn("UpsertLottery error:", err)
return
for _, v := range item {
_, err = c.Upsert(bson.M{"snid": v.SnId, "cid": v.CId}, v)
if err != nil {
return
}
}
return
}
@ -47,13 +66,13 @@ func UpsertLottery(item *model.Lottery) (err error) {
type LotterySvc struct {
}
func (svc *LotterySvc) GetAllLottery(args struct{}, ret *[]model.Lottery) (err error) {
*ret, err = GetAllLottery()
func (svc *LotterySvc) Get(req *model.GetLotteryReq, ret *model.GetLotteryResp) (err error) {
ret.Lottery, err = GetLottery(req.Platform, req.SnId, req.CId, req.StartTs)
return
}
func (svc *LotterySvc) UpsertLottery(args *model.Lottery, ret *bool) (err error) {
err = UpsertLottery(args)
func (svc *LotterySvc) Upsert(req *model.UpsertLotteryReq, ret *bool) (err error) {
err = UpsertLottery(req.Platform, req.Lottery)
if err == nil {
*ret = true
}

View File

@ -47,4 +47,7 @@ const (
ETCDKEY_RoomConfigSystem = "/game/room_system" // 系统房间配置
ETCDKEY_ClientUpgrade = "/game/client_upgrade" // 客户端升级奖励配置
ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置
ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置
ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置
ETCDKEY_LotteryShow = "/game/show_lottery" //抽奖展示配置
)

View File

@ -2,381 +2,381 @@
local _ = {}
_.CashManiaBetBetChangeList = {
[0] = {
index = 0,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.6,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.9,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 1,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 3,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 9,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 10,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 30,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 90,
bet_size_index = 3,
bet_level_index = 9,
},
[0] = {
index = 0,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.6,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.9,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 1,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 3,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 9,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 10,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 30,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 90,
bet_size_index = 3,
bet_level_index = 9,
},
}
_.CashManiaBetBetLevel = {
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
}
_.CashManiaBetBetLine = {
[0] = {
index = 0,
bet_line = 10,
},
[0] = {
index = 0,
bet_line = 10,
},
}
_.CashManiaBetBetSize = {
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
}
_.CashManiaFormation = {
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line1Form5X5TypeA",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 2,
node_type = "FreeSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line1Form5X5TypeA",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line1Form5X5TypeA",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 2,
node_type = "FreeSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line1Form5X5TypeA",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
}
_.CashManiaReelBaseSpinRange = {
{5, 5, 5},
{ 5, 5, 5 },
}
_.CashManiaReelBaseSpinReel = {
{1, 200, 2, 200, 3, 200, 4, 200, 5, 200},
{6, 200, 7, 200, 8, 200, 9, 200, 10, 200, 11, 200, 12, 200, 13, 200, 14, 200, 15, 200, 16, 200, 17, 200, 18, 200, 19, 200},
{1, 200, 2, 200, 3, 200, 4, 200, 5, 200},
{ 1, 200, 2, 200, 3, 200, 4, 200, 5, 200 },
{ 6, 200, 7, 200, 8, 200, 9, 200, 10, 200, 11, 200, 12, 200, 13, 200, 14, 200, 15, 200, 16, 200, 17, 200, 18, 200, 19, 200 },
{ 1, 200, 2, 200, 3, 200, 4, 200, 5, 200 },
}
_.CashManiaSymbol = {
[1] = {
id = 1,
name = "100倍",
is_wild = false,
group = {1},
pay_rate = {0, 0, 100},
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "5倍",
is_wild = false,
group = {2},
pay_rate = {0, 0, 50},
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "1倍",
is_wild = false,
group = {3},
pay_rate = {0, 0, 10},
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "0.5倍",
is_wild = false,
group = {4},
pay_rate = {0, 0, 5},
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "0.1倍",
is_wild = false,
group = {5},
pay_rate = {0, 0, 1},
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "5FreeSpin",
is_wild = true,
group = {6},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[7] = {
id = 7,
name = "10FreeSpin",
is_wild = true,
group = {7},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[8] = {
id = 8,
name = "20FreeSpin",
is_wild = true,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[9] = {
id = 9,
name = "wildx1",
is_wild = true,
group = {9},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[10] = {
id = 10,
name = "wildx2",
is_wild = true,
group = {10},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[11] = {
id = 11,
name = "wildx3",
is_wild = true,
group = {11},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[12] = {
id = 12,
name = "wildx5",
is_wild = true,
group = {12},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[13] = {
id = 13,
name = "wildx10",
is_wild = true,
group = {13},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[14] = {
id = 14,
name = "wildx15",
is_wild = true,
group = {14},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[15] = {
id = 15,
name = "wildx20",
is_wild = true,
group = {15},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[16] = {
id = 16,
name = "wildx30",
is_wild = true,
group = {16},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[17] = {
id = 17,
name = "wildx40",
is_wild = true,
group = {17},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[18] = {
id = 18,
name = "wildx50",
is_wild = true,
group = {18},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[19] = {
id = 19,
name = "wildx100",
is_wild = true,
group = {19},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "empty",
is_wild = false,
group = {200},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[1] = {
id = 1,
name = "100倍",
is_wild = false,
group = { 1 },
pay_rate = { 0, 0, 100 },
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "5倍",
is_wild = false,
group = { 2 },
pay_rate = { 0, 0, 50 },
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "1倍",
is_wild = false,
group = { 3 },
pay_rate = { 0, 0, 10 },
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "0.5倍",
is_wild = false,
group = { 4 },
pay_rate = { 0, 0, 5 },
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "0.1倍",
is_wild = false,
group = { 5 },
pay_rate = { 0, 0, 1 },
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "5FreeSpin",
is_wild = true,
group = { 6 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[7] = {
id = 7,
name = "10FreeSpin",
is_wild = true,
group = { 7 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[8] = {
id = 8,
name = "20FreeSpin",
is_wild = true,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[9] = {
id = 9,
name = "wildx1",
is_wild = true,
group = { 9 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[10] = {
id = 10,
name = "wildx2",
is_wild = true,
group = { 10 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[11] = {
id = 11,
name = "wildx3",
is_wild = true,
group = { 11 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[12] = {
id = 12,
name = "wildx5",
is_wild = true,
group = { 12 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[13] = {
id = 13,
name = "wildx10",
is_wild = true,
group = { 13 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[14] = {
id = 14,
name = "wildx15",
is_wild = true,
group = { 14 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[15] = {
id = 15,
name = "wildx20",
is_wild = true,
group = { 15 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[16] = {
id = 16,
name = "wildx30",
is_wild = true,
group = { 16 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[17] = {
id = 17,
name = "wildx40",
is_wild = true,
group = { 17 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[18] = {
id = 18,
name = "wildx50",
is_wild = true,
group = { 18 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[19] = {
id = 19,
name = "wildx100",
is_wild = true,
group = { 19 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "empty",
is_wild = false,
group = { 200 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
}
_.CashManiaSymbolBetRatio = {
{
bet_ratio = 0.1,
},
{
bet_ratio = 0.1,
},
}
return _

View File

@ -2,333 +2,333 @@
local _ = {}
_.FortuneDragonBetBetChangeList = {
[0] = {
index = 0,
bet_change_list = 0.15,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.45,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 0.5,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 0.75,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 2.5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 4.5,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 7.5,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 22.5,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 9,
},
[0] = {
index = 0,
bet_change_list = 0.15,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.45,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 0.5,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 0.75,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 2.5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 4.5,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 7.5,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 22.5,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 9,
},
}
_.FortuneDragonBetBetLevel = {
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
}
_.FortuneDragonBetBetLine = {
[0] = {
index = 0,
bet_line = 5,
},
[0] = {
index = 0,
bet_line = 5,
},
}
_.FortuneDragonBetBetSize = {
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
}
_.FortuneDragonFormation = {
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "FreeSpin",
id = 1,
seq_id = 1,
reel = "FreeSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 2,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "SureWinBaseSpin",
id = 1,
seq_id = 1,
reel = "SureWinBaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "FreeSpin",
id = 1,
seq_id = 1,
reel = "FreeSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 2,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "SureWinBaseSpin",
id = 1,
seq_id = 1,
reel = "SureWinBaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
}
_.FortuneDragonReelBaseSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneDragonReelBaseSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2},
{7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 },
{ 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 },
}
_.FortuneDragonReelFreeSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneDragonReelFreeSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 3, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 2, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 1, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 3, 5, 3, 5, 6, 7, 2, 5, 6, 5, 3, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 1, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 2, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 1, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 2, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 3, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 3, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 3, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 3, 4, 7, 3, 6, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 1, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 1, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2},
{7, 5, 5, 4, 7, 3, 7, 6, 4, 2, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 3, 5, 5, 7, 2, 3, 4, 7, 6, 3, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 3, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 1, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 1, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 2, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 3, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 2, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 1, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 3, 5, 3, 5, 6, 7, 2, 5, 6, 5, 3, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 1, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 2, 4, 6, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 1, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 2, 6, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 3, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 3, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 3, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 3, 4, 7, 3, 6, 3, 4, 7, 7, 6, 2, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 1, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 1, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 1, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 },
{ 7, 5, 5, 4, 7, 3, 7, 6, 4, 2, 4, 3, 3, 3, 6, 1, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 3, 5, 5, 7, 2, 3, 4, 7, 6, 3, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 3, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 1, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 1, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 2, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 },
}
_.FortuneDragonReelSureWinBaseSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneDragonReelSureWinBaseSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 2, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 1, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 3, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 2, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 2, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 2, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 3, 4, 5, 7, 7, 2, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 6, 6, 5, 7, 6, 4, 5, 4, 6, 1, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 3, 2, 6, 5, 2, 6, 6, 3, 4, 6, 4, 2, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 5, 3, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 2, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 2, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 2, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 2, 7, 7, 6, 2, 7, 3, 7, 5, 2, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 3, 6, 7, 7, 3, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 1, 3, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 2, 7, 6, 3, 3, 2, 4, 4, 7, 2},
{7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 1, 3, 3, 3, 6, 1, 7, 6, 3, 5, 4, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 2, 7, 3, 4, 5, 5, 5, 6, 3, 1, 7, 7, 2, 6, 5, 4, 6, 6, 3, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 4, 3, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 2, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 3, 7, 5, 2, 6, 6, 5, 2, 7, 4, 4, 4, 7, 2, 6, 6, 3, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 2, 7, 6, 5, 5, 5, 2, 2, 5, 7, 2, 7, 3, 4, 5, 3, 7, 7, 2, 5, 5, 5, 1, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 3, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 3, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 3, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 1, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 2, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 1, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 1, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 3, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 4, 2, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 2, 7, 7, 6, 7, 4, 6, 1, 1, 1, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 2, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 3, 4, 5, 7, 7, 2, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 6, 6, 5, 7, 6, 4, 5, 4, 6, 1, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 3, 2, 6, 5, 2, 6, 6, 3, 4, 6, 4, 2, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 5, 3, 6, 4, 7, 6, 1, 3, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 1, 7, 2, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 2, 5, 5, 7, 2, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 2, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 2, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 3, 7, 6, 5, 4, 5, 4, 2, 7, 7, 6, 2, 7, 3, 7, 5, 2, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 3, 6, 7, 7, 3, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 1, 3, 7, 2, 6, 7, 3, 5, 7, 1, 5, 7, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 2, 7, 6, 3, 3, 2, 4, 4, 7, 2 },
{ 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 1, 3, 3, 3, 6, 1, 7, 6, 3, 5, 4, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 2, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 2, 7, 3, 4, 5, 5, 5, 6, 3, 1, 7, 7, 2, 6, 5, 4, 6, 6, 3, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 4, 3, 2, 7, 5, 6, 6, 6, 5, 3, 5, 2, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 1, 4, 5, 7, 7, 7, 3, 6, 1, 5, 3, 7, 4, 3, 7, 5, 2, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 1, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 3, 7, 5, 2, 6, 6, 5, 2, 7, 4, 4, 4, 7, 2, 6, 6, 3, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 2, 7, 6, 5, 5, 5, 2, 2, 5, 7, 2, 7, 3, 4, 5, 3, 7, 7, 2, 5, 5, 5, 1, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 3, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 3, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 3, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 },
}
_.FortuneDragonSymbol = {
[1] = {
id = 1,
name = "Wild",
is_wild = true,
group = {1},
pay_rate = {0, 0, 100},
client_order = 0,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = {2},
pay_rate = {0, 0, 50},
client_order = 0,
client_dsc = "",
},
[3] = {
id = 3,
name = "红包",
is_wild = false,
group = {3},
pay_rate = {0, 0, 25},
client_order = 0,
client_dsc = "",
},
[4] = {
id = 4,
name = "灯笼",
is_wild = false,
group = {4},
pay_rate = {0, 0, 10},
client_order = 0,
client_dsc = "",
},
[5] = {
id = 5,
name = "福炮",
is_wild = false,
group = {5},
pay_rate = {0, 0, 5},
client_order = 0,
client_dsc = "",
},
[6] = {
id = 6,
name = "花结",
is_wild = false,
group = {6},
pay_rate = {0, 0, 3},
client_order = 0,
client_dsc = "",
},
[7] = {
id = 7,
name = "铜钱",
is_wild = false,
group = {7},
pay_rate = {0, 0, 2},
client_order = 0,
client_dsc = "",
},
[8] = {
id = 8,
name = "X2",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[9] = {
id = 9,
name = "X5",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[10] = {
id = 10,
name = "X10",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "Empty",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[1] = {
id = 1,
name = "Wild",
is_wild = true,
group = { 1 },
pay_rate = { 0, 0, 100 },
client_order = 0,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = { 2 },
pay_rate = { 0, 0, 50 },
client_order = 0,
client_dsc = "",
},
[3] = {
id = 3,
name = "红包",
is_wild = false,
group = { 3 },
pay_rate = { 0, 0, 25 },
client_order = 0,
client_dsc = "",
},
[4] = {
id = 4,
name = "灯笼",
is_wild = false,
group = { 4 },
pay_rate = { 0, 0, 10 },
client_order = 0,
client_dsc = "",
},
[5] = {
id = 5,
name = "福炮",
is_wild = false,
group = { 5 },
pay_rate = { 0, 0, 5 },
client_order = 0,
client_dsc = "",
},
[6] = {
id = 6,
name = "花结",
is_wild = false,
group = { 6 },
pay_rate = { 0, 0, 3 },
client_order = 0,
client_dsc = "",
},
[7] = {
id = 7,
name = "铜钱",
is_wild = false,
group = { 7 },
pay_rate = { 0, 0, 2 },
client_order = 0,
client_dsc = "",
},
[8] = {
id = 8,
name = "X2",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[9] = {
id = 9,
name = "X5",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[10] = {
id = 10,
name = "X10",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "Empty",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
}
_.FortuneDragonSymbolBetRatio = {
{
bet_ratio = 1,
},
{
bet_ratio = 1,
},
}
return _

View File

@ -2,283 +2,283 @@
local _ = {}
_.FortuneMouseBetBetChangeList = {
[0] = {
index = 0,
bet_change_list = 0.15,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.45,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 0.5,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 0.75,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 2.5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 4.5,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 7.5,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 22.5,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 9,
},
[0] = {
index = 0,
bet_change_list = 0.15,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.45,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 0.5,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 0.75,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 2.5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 4.5,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 7.5,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 22.5,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 9,
},
}
_.FortuneMouseBetBetLevel = {
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
}
_.FortuneMouseBetBetLine = {
[0] = {
index = 0,
bet_line = 5,
},
[0] = {
index = 0,
bet_line = 5,
},
}
_.FortuneMouseBetBetSize = {
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
}
_.FortuneMouseFormation = {
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "ReSpin",
id = 1,
seq_id = 1,
reel = "ReSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "ReSpin",
id = 1,
seq_id = 1,
reel = "ReSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
}
_.FortuneMouseReelBaseSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneMouseReelBaseSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 5, 3, 4, 2, 7, 7, 7, 6, 5, 5, 5, 4, 6, 5, 5, 5, 4, 7, 7, 7, 4, 7, 6, 5, 3, 3, 3, 5, 7, 6, 5, 7, 6, 5, 7, 7, 7, 6, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 1, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 7, 6, 4, 5, 4, 6, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 5, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 7, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 4, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 5, 7, 6, 6, 2, 7, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 6, 6, 7, 4, 6, 6, 6, 5, 4, 7, 6, 4, 7, 3, 6, 7, 6, 7, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 1, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 6, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 2, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 6, 6, 6, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 7, 6, 5, 7, 3, 6, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 6, 5, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2},
{7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 6, 6, 7, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 1, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 7, 4, 5, 7, 7, 7, 3, 6, 7, 5, 6, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 7, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 4, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 5, 3, 4, 2, 7, 7, 7, 6, 5, 5, 5, 4, 6, 5, 5, 5, 4, 7, 7, 7, 4, 7, 6, 5, 3, 3, 3, 5, 7, 6, 5, 7, 6, 5, 7, 7, 7, 6, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 1, 7, 7, 3, 6, 4, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 1, 5, 7, 6, 6, 7, 7, 6, 3, 5, 1, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 1, 3, 7, 7, 7, 4, 5, 7, 6, 4, 5, 4, 6, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 1, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 1, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 5, 4, 1, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 7, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 4, 4, 6, 6, 6, 3, 4, 7, 1, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 5, 7, 6, 6, 2, 7, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 6, 6, 7, 4, 6, 6, 6, 5, 4, 7, 6, 4, 7, 3, 6, 7, 6, 7, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 1, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 6, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 2, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 6, 6, 6, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 7, 7, 7, 6, 5, 7, 3, 6, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 1, 6, 5, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 5, 7, 6, 1, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 },
{ 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 6, 6, 7, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 1, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 1, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 1, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 1, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 7, 4, 5, 7, 7, 7, 3, 6, 7, 5, 6, 7, 4, 3, 7, 5, 6, 6, 6, 7, 1, 5, 6, 7, 4, 6, 5, 6, 5, 7, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 1, 5, 4, 3, 7, 3, 7, 5, 6, 5, 4, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 1, 7, 2, 1, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 },
}
_.FortuneMouseReelReSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneMouseReelReSpinReel = {
{1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8},
{1, 1, 1},
{1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8},
{ 1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8 },
{ 1, 1, 1 },
{ 1, 1, 1, 2, 2, 2, 2, 7, 7, 7, 7, 8, 8, 8, 6, 6, 6, 6, 3, 3, 3, 3, 8, 8, 8, 5, 5, 5, 5, 4, 4, 4, 4, 8, 8, 8 },
}
_.FortuneMouseSymbol = {
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = {1},
pay_rate = {0, 0, 300},
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "倒福",
is_wild = false,
group = {2},
pay_rate = {0, 0, 100},
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "红包",
is_wild = false,
group = {3},
pay_rate = {0, 0, 50},
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "钱袋",
is_wild = false,
group = {4},
pay_rate = {0, 0, 30},
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "爆竹",
is_wild = false,
group = {5},
pay_rate = {0, 0, 15},
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "橘子",
is_wild = false,
group = {6},
pay_rate = {0, 0, 5},
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "花生",
is_wild = false,
group = {7},
pay_rate = {0, 0, 3},
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "SuperStack",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = { 1 },
pay_rate = { 0, 0, 300 },
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "倒福",
is_wild = false,
group = { 2 },
pay_rate = { 0, 0, 100 },
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "红包",
is_wild = false,
group = { 3 },
pay_rate = { 0, 0, 50 },
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "钱袋",
is_wild = false,
group = { 4 },
pay_rate = { 0, 0, 30 },
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "爆竹",
is_wild = false,
group = { 5 },
pay_rate = { 0, 0, 15 },
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "橘子",
is_wild = false,
group = { 6 },
pay_rate = { 0, 0, 5 },
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "花生",
is_wild = false,
group = { 7 },
pay_rate = { 0, 0, 3 },
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "SuperStack",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
}
_.FortuneMouseSymbolBetRatio = {
{
bet_ratio = 1,
},
{
bet_ratio = 1,
},
}
return _

View File

@ -2,292 +2,292 @@
local _ = {}
_.FortuneOxBetBetChangeList = {
[0] = {
index = 0,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.6,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.9,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 1,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 3,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 9,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 10,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 30,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 90,
bet_size_index = 3,
bet_level_index = 9,
},
[0] = {
index = 0,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.6,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.9,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 1,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 3,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 9,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 10,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 30,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 90,
bet_size_index = 3,
bet_level_index = 9,
},
}
_.FortuneOxBetBetLevel = {
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
}
_.FortuneOxBetBetLine = {
[0] = {
index = 0,
bet_line = 10,
},
[0] = {
index = 0,
bet_line = 10,
},
}
_.FortuneOxBetBetSize = {
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
}
_.FortuneOxFormation = {
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "ReSpin",
id = 1,
seq_id = 1,
reel = "ReSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "ReSpin",
id = 1,
seq_id = 1,
reel = "ReSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
}
_.FortuneOxReelBaseSpinRange = {
{3, 4, 3},
{ 3, 4, 3 },
}
_.FortuneOxReelBaseSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 1, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 6, 6, 6, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 7, 7, 7, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 7, 7, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 7, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 6, 6, 6, 6, 6, 7, 7, 7, 7, 5, 4, 7, 5, 7, 2, 6, 7, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 7, 7, 7, 7, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 1, 2, 3, 4, 4, 7, 5, 5, 5, 5, 6, 6, 6, 6, 4, 7, 6, 1, 1, 7, 4, 5, 7, 6, 5, 4, 6, 7, 4, 7, 3, 5, 6, 7, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 7, 7, 6, 6, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 6, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 7, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 7, 7, 7, 7, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 7, 7, 7, 7, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 7, 7, 7, 7, 7},
{5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 7, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 2, 2, 6, 6, 6, 3, 7, 5, 6, 6, 6, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 7, 7, 7, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 6, 6, 6, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 7, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 6, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 1, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 6, 6, 6, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 2, 5, 7, 6, 6, 7, 7, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 7, 7, 7, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 7, 7, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 7, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 6, 6, 6, 6, 6, 7, 7, 7, 7, 5, 4, 7, 5, 7, 2, 6, 7, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 7, 7, 7, 7, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 1, 2, 3, 4, 4, 7, 5, 5, 5, 5, 6, 6, 6, 6, 4, 7, 6, 1, 1, 7, 4, 5, 7, 6, 5, 4, 6, 7, 4, 7, 3, 5, 6, 7, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 7, 7, 6, 6, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 6, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 1, 1, 1, 5, 3, 7, 7, 7, 7, 7, 6, 4, 7, 6, 4, 1, 7, 5, 3, 5, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 1, 1, 1, 6, 5, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 7, 7, 7, 7, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 7, 7, 7, 7, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 1, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 7, 7, 7, 7, 7 },
{ 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 1, 7, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 7, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 2, 2, 6, 6, 6, 3, 7, 5, 6, 6, 6, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 7, 7, 7, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 6, 6, 6, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 7, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 6, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7 },
}
_.FortuneOxReelReSpinRange = {
{3, 4, 3},
{ 3, 4, 3 },
}
_.FortuneOxReelReSpinReel = {
{9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8},
{9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8},
{9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8},
{ 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8 },
{ 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8 },
{ 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 2, 2, 2, 2, 2, 2, 2, 7, 7, 7, 7, 7, 7, 7, 7, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 9, 9, 9, 9, 9, 9, 9, 1, 1, 1, 1, 1, 1, 8, 8, 8, 8, 8, 8, 8, 8, 5, 5, 5, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, 8, 8, 8, 8, 8, 8, 8, 8 },
}
_.FortuneOxSymbol = {
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = {1},
pay_rate = {0, 0, 200},
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = {2},
pay_rate = {0, 0, 100},
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "金锦盒",
is_wild = false,
group = {3},
pay_rate = {0, 0, 50},
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "钱袋",
is_wild = false,
group = {4},
pay_rate = {0, 0, 20},
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "红包",
is_wild = false,
group = {5},
pay_rate = {0, 0, 10},
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "橘子",
is_wild = false,
group = {6},
pay_rate = {0, 0, 5},
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "炮竹",
is_wild = false,
group = {7},
pay_rate = {0, 0, 3},
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "SuperStack1",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[9] = {
id = 9,
name = "SuperStack2",
is_wild = false,
group = {9},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = { 1 },
pay_rate = { 0, 0, 200 },
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = { 2 },
pay_rate = { 0, 0, 100 },
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "金锦盒",
is_wild = false,
group = { 3 },
pay_rate = { 0, 0, 50 },
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "钱袋",
is_wild = false,
group = { 4 },
pay_rate = { 0, 0, 20 },
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "红包",
is_wild = false,
group = { 5 },
pay_rate = { 0, 0, 10 },
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "橘子",
is_wild = false,
group = { 6 },
pay_rate = { 0, 0, 5 },
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "炮竹",
is_wild = false,
group = { 7 },
pay_rate = { 0, 0, 3 },
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "SuperStack1",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[9] = {
id = 9,
name = "SuperStack2",
is_wild = false,
group = { 9 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
}
_.FortuneOxSymbolBetRatio = {
{
bet_ratio = 1,
},
{
bet_ratio = 1,
},
}
return _

View File

@ -2,345 +2,345 @@
local _ = {}
_.FortuneRabbitBetBetChangeList = {
[0] = {
index = 0,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.6,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.9,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 1,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 3,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 9,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 10,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 30,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 90,
bet_size_index = 3,
bet_level_index = 9,
},
[0] = {
index = 0,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.6,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.9,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 1,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 3,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 9,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 10,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 30,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 90,
bet_size_index = 3,
bet_level_index = 9,
},
}
_.FortuneRabbitBetBetLevel = {
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
}
_.FortuneRabbitBetBetLine = {
[0] = {
index = 0,
bet_line = 10,
},
[0] = {
index = 0,
bet_line = 10,
},
}
_.FortuneRabbitBetBetSize = {
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
}
_.FortuneRabbitCashPrizeWeight = {
{
id = 1,
prize_value = 0.5,
weight = 144,
},
{
id = 2,
prize_value = 1,
weight = 25,
},
{
id = 3,
prize_value = 2,
weight = 25,
},
{
id = 4,
prize_value = 5,
weight = 100,
},
{
id = 5,
prize_value = 10,
weight = 50,
},
{
id = 6,
prize_value = 20,
weight = 25,
},
{
id = 7,
prize_value = 30,
weight = 15,
},
{
id = 8,
prize_value = 50,
weight = 10,
},
{
id = 9,
prize_value = 100,
weight = 5,
},
{
id = 10,
prize_value = 500,
weight = 1,
},
{
id = 1,
prize_value = 0.5,
weight = 144,
},
{
id = 2,
prize_value = 1,
weight = 25,
},
{
id = 3,
prize_value = 2,
weight = 25,
},
{
id = 4,
prize_value = 5,
weight = 100,
},
{
id = 5,
prize_value = 10,
weight = 50,
},
{
id = 6,
prize_value = 20,
weight = 25,
},
{
id = 7,
prize_value = 30,
weight = 15,
},
{
id = 8,
prize_value = 50,
weight = 10,
},
{
id = 9,
prize_value = 100,
weight = 5,
},
{
id = 10,
prize_value = 500,
weight = 1,
},
}
_.FortuneRabbitFormation = {
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "FreeSpin",
id = 1,
seq_id = 1,
reel = "FreeSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "FreeSpin",
id = 1,
seq_id = 1,
reel = "FreeSpin",
matrix = "Line10Form343TypeA",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
}
_.FortuneRabbitReelBaseSpinRange = {
{3, 4, 3},
{ 3, 4, 3 },
}
_.FortuneRabbitReelBaseSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 8, 8, 8, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 5, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 5, 6, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 8, 8, 8, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 3, 3, 3, 6, 2, 5, 7, 6, 8, 8, 8, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 8, 8, 8, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 8, 8, 8, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 4, 4, 4, 7, 7, 7, 3, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 8, 8, 8, 2, 7, 7, 2, 2, 6, 5, 2, 6, 4, 7, 6, 3, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 4, 5, 6, 6, 6, 8, 8, 8, 7, 5, 4, 1, 5, 7, 2, 6, 7, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 6, 5, 7, 4, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 5, 2, 3, 4, 4, 7, 5, 5, 5, 5, 8, 8, 8, 8, 4, 7, 6, 5, 1, 7, 4, 5, 7, 6, 5, 4, 8, 8, 8, 8, 3, 5, 6, 4, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 6, 7, 6, 7, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 8, 8, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 5, 5, 5, 5, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 4, 6, 3, 2, 5, 5, 4, 7, 7, 5, 3, 4, 8, 8, 5, 6, 4, 7, 5, 5, 5, 5, 8, 8, 7, 6, 3, 1, 1, 1, 5, 3, 4, 6, 7, 5, 3, 6, 4, 7, 6, 4, 1, 7, 5, 8, 8, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 6, 4, 7, 5, 6, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 8, 8, 8, 8, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 8, 8, 8, 8, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 8, 8, 8, 8, 6, 5, 3, 4, 2, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 5, 5, 5, 5, 7},
{5, 5, 5, 6, 7, 3, 6, 4, 4, 4, 3, 3, 3, 4, 7, 1, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 8, 8, 8, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 1, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 4, 6, 5, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 8, 8, 8, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 4, 3, 6, 6, 6, 3, 7, 5, 8, 8, 8, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 8, 8, 8, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 2, 2, 2, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 8, 8, 8, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 8, 8, 8, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 8, 8, 8, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 4, 4, 4, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 8, 8, 8, 6, 2, 4, 5, 6, 7, 6, 6, 6, 2, 2, 2, 1, 5, 4, 4, 4, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 5, 6, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 2, 6, 5, 7, 8, 8, 8, 2, 2, 2, 5, 6, 2, 2, 2, 5, 7, 6, 6, 4, 2, 7, 7, 7, 6, 5, 7, 6, 1, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 1, 6, 6, 6, 5, 7, 5, 6, 7, 2, 5, 6, 5, 3, 3, 3, 6, 2, 5, 7, 6, 8, 8, 8, 6, 7, 5, 2, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 2, 2, 2, 7, 8, 8, 8, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 7, 7, 5, 5, 5, 7, 6, 1, 2, 4, 6, 5, 7, 2, 2, 2, 7, 4, 7, 5, 6, 8, 8, 8, 5, 6, 7, 4, 6, 1, 5, 5, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 4, 4, 4, 7, 7, 7, 3, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 6, 5, 7, 6, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 2, 5, 5, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 8, 8, 8, 2, 7, 7, 2, 2, 6, 5, 2, 6, 4, 7, 6, 3, 5, 4, 6, 6, 6, 3, 4, 7, 2, 5, 6, 7, 2, 4, 5, 6, 6, 6, 8, 8, 8, 7, 5, 4, 1, 5, 7, 2, 6, 7, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 6, 5, 7, 4, 6, 2, 7, 5, 6, 4, 4, 4, 4, 3, 5, 2, 3, 4, 4, 7, 5, 5, 5, 5, 8, 8, 8, 8, 4, 7, 6, 5, 1, 7, 4, 5, 7, 6, 5, 4, 8, 8, 8, 8, 3, 5, 6, 4, 1, 5, 7, 3, 4, 6, 7, 2, 2, 2, 2, 6, 7, 6, 7, 3, 4, 6, 5, 1, 7, 6, 6, 4, 5, 8, 8, 5, 7, 6, 4, 4, 4, 4, 3, 6, 1, 3, 5, 4, 6, 7, 2, 3, 4, 5, 5, 5, 5, 3, 6, 7, 2, 3, 7, 6, 5, 4, 7, 6, 4, 3, 3, 3, 3, 4, 7, 7, 5, 1, 6, 5, 7, 4, 6, 3, 2, 5, 5, 4, 7, 7, 5, 3, 4, 8, 8, 5, 6, 4, 7, 5, 5, 5, 5, 8, 8, 7, 6, 3, 1, 1, 1, 5, 3, 4, 6, 7, 5, 3, 6, 4, 7, 6, 4, 1, 7, 5, 8, 8, 5, 5, 5, 1, 7, 4, 6, 7, 4, 6, 7, 4, 6, 3, 7, 5, 6, 3, 5, 6, 4, 7, 5, 6, 4, 5, 7, 7, 7, 7, 1, 2, 2, 3, 3, 7, 8, 8, 8, 8, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 1, 3, 4, 7, 6, 6, 6, 6, 7, 1, 6, 5, 7, 3, 5, 6, 7, 7, 3, 6, 7, 5, 5, 8, 8, 8, 8, 7, 6, 5, 5, 5, 5, 1, 1, 1, 1, 2, 4, 6, 3, 5, 8, 8, 8, 8, 6, 5, 3, 4, 2, 6, 6, 6, 6, 5, 1, 7, 7, 7, 7, 6, 3, 7, 5, 4, 4, 7, 6, 5, 5, 5, 5, 7 },
{ 5, 5, 5, 6, 7, 3, 6, 4, 4, 4, 3, 3, 3, 4, 7, 1, 6, 5, 5, 5, 6, 7, 5, 4, 3, 6, 7, 5, 4, 3, 8, 8, 8, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 1, 1, 1, 3, 7, 5, 3, 7, 6, 4, 7, 6, 3, 4, 6, 5, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 6, 6, 6, 8, 8, 8, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 7, 3, 6, 4, 7, 2, 4, 3, 6, 6, 6, 3, 7, 5, 8, 8, 8, 3, 7, 5, 3, 7, 6, 4, 3, 6, 7, 4, 6, 7, 3, 2, 7, 7, 7, 6, 3, 3, 3, 5, 8, 8, 8, 3, 6, 3, 1, 1, 7, 6, 3, 7, 5, 2, 2, 2, 7, 3, 5, 6, 7, 4, 6, 6, 6, 5, 3, 2, 7, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 3, 7, 4, 4, 4, 7, 6, 6, 6, 8, 8, 8, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 8, 8, 8, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 8, 8, 8, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 4, 4, 4, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 3, 3, 3, 5, 7, 3, 5, 7, 6, 5, 7, 7, 7, 7, 6, 6, 3, 7, 4, 6, 2, 3, 5, 7, 2, 1, 5, 7, 6, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 7, 4, 2, 7, 7, 7, 6, 6, 6, 7, 7, 7 },
}
_.FortuneRabbitReelFreeSpinRange = {
{3, 4, 3},
{ 3, 4, 3 },
}
_.FortuneRabbitReelFreeSpinReel = {
{200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200},
{200, 200, 200, 8, 8, 8, 8, 200, 200, 200, 200, 200},
{200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200},
{ 200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200 },
{ 200, 200, 200, 8, 8, 8, 8, 200, 200, 200, 200, 200 },
{ 200, 200, 200, 200, 8, 8, 8, 200, 200, 200, 200, 200 },
}
_.FortuneRabbitSymbol = {
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = {1},
pay_rate = {0, 0, 200},
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = {2},
pay_rate = {0, 0, 100},
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "钱袋",
is_wild = false,
group = {3},
pay_rate = {0, 0, 50},
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "红包",
is_wild = false,
group = {4},
pay_rate = {0, 0, 10},
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "铜币",
is_wild = false,
group = {5},
pay_rate = {0, 0, 5},
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "爆竹",
is_wild = false,
group = {6},
pay_rate = {0, 0, 3},
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "胡萝卜",
is_wild = false,
group = {7},
pay_rate = {0, 0, 2},
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "Cash",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "Empty",
is_wild = false,
group = {200},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = { 1 },
pay_rate = { 0, 0, 200 },
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = { 2 },
pay_rate = { 0, 0, 100 },
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "钱袋",
is_wild = false,
group = { 3 },
pay_rate = { 0, 0, 50 },
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "红包",
is_wild = false,
group = { 4 },
pay_rate = { 0, 0, 10 },
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "铜币",
is_wild = false,
group = { 5 },
pay_rate = { 0, 0, 5 },
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "爆竹",
is_wild = false,
group = { 6 },
pay_rate = { 0, 0, 3 },
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "胡萝卜",
is_wild = false,
group = { 7 },
pay_rate = { 0, 0, 2 },
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "Cash",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "Empty",
is_wild = false,
group = { 200 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
}
_.FortuneRabbitSymbolBetRatio = {
{
bet_ratio = 1,
},
{
bet_ratio = 1,
},
}
return _

View File

@ -2,292 +2,292 @@
local _ = {}
_.FortuneTigerBetBetChangeList = {
[0] = {
index = 0,
bet_change_list = 0.15,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.45,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 0.5,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 0.75,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 2.5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 4.5,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 7.5,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 22.5,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 9,
},
[0] = {
index = 0,
bet_change_list = 0.15,
bet_size_index = 0,
bet_level_index = 0,
},
[1] = {
index = 1,
bet_change_list = 0.3,
bet_size_index = 0,
bet_level_index = 1,
},
[2] = {
index = 2,
bet_change_list = 0.45,
bet_size_index = 0,
bet_level_index = 2,
},
[3] = {
index = 3,
bet_change_list = 0.5,
bet_size_index = 1,
bet_level_index = 0,
},
[4] = {
index = 4,
bet_change_list = 0.75,
bet_size_index = 0,
bet_level_index = 4,
},
[5] = {
index = 5,
bet_change_list = 1.5,
bet_size_index = 0,
bet_level_index = 9,
},
[6] = {
index = 6,
bet_change_list = 2.5,
bet_size_index = 1,
bet_level_index = 4,
},
[7] = {
index = 7,
bet_change_list = 4.5,
bet_size_index = 3,
bet_level_index = 0,
},
[8] = {
index = 8,
bet_change_list = 5,
bet_size_index = 1,
bet_level_index = 9,
},
[9] = {
index = 9,
bet_change_list = 7.5,
bet_size_index = 2,
bet_level_index = 4,
},
[10] = {
index = 10,
bet_change_list = 15,
bet_size_index = 2,
bet_level_index = 9,
},
[11] = {
index = 11,
bet_change_list = 22.5,
bet_size_index = 3,
bet_level_index = 4,
},
[12] = {
index = 12,
bet_change_list = 45,
bet_size_index = 3,
bet_level_index = 9,
},
}
_.FortuneTigerBetBetLevel = {
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
[0] = {
index = 0,
bet_level = 1,
},
[1] = {
index = 1,
bet_level = 2,
},
[2] = {
index = 2,
bet_level = 3,
},
[3] = {
index = 3,
bet_level = 4,
},
[4] = {
index = 4,
bet_level = 5,
},
[5] = {
index = 5,
bet_level = 6,
},
[6] = {
index = 6,
bet_level = 7,
},
[7] = {
index = 7,
bet_level = 8,
},
[8] = {
index = 8,
bet_level = 9,
},
[9] = {
index = 9,
bet_level = 10,
},
}
_.FortuneTigerBetBetLine = {
[0] = {
index = 0,
bet_line = 5,
},
[0] = {
index = 0,
bet_line = 5,
},
}
_.FortuneTigerBetBetSize = {
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
[0] = {
index = 0,
bet_size = 300,
},
[1] = {
index = 1,
bet_size = 1000,
},
[2] = {
index = 2,
bet_size = 3000,
},
[3] = {
index = 3,
bet_size = 9000,
},
}
_.FortuneTigerFormation = {
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "ReSpin",
id = 1,
seq_id = 1,
reel = "ReSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 1,
node_type = "BaseSpin",
id = 1,
seq_id = 1,
reel = "BaseSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 2,
other_init_method = 4,
first_init_symbols = {},
other_init_symbols = {},
},
{
spin_type = 3,
node_type = "ReSpin",
id = 1,
seq_id = 1,
reel = "ReSpin",
matrix = "Line5Form3X3TypeB",
symbol = "Default",
first_init_method = 3,
other_init_method = 3,
first_init_symbols = {},
other_init_symbols = {},
},
}
_.FortuneTigerReelBaseSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneTigerReelBaseSpinReel = {
{3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 0, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 0, 7, 7, 3, 6, 4, 7, 6, 0, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 0, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 0, 5, 7, 6, 6, 7, 7, 6, 3, 5, 0, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 0, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 0, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 0, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 0, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 0, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6},
{5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 0, 0, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 0, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 0, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 0, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 0, 0, 0, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 0, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 0, 0, 0, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 0, 3, 4, 7, 6, 6, 6, 7, 7, 0, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 0, 0, 0, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 0, 6, 6, 5, 7, 6, 0, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2},
{7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 0, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 0, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 0, 0, 0, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 0, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 0, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 0, 4, 5, 7, 7, 7, 3, 6, 0, 0, 0, 7, 4, 3, 7, 5, 6, 6, 6, 7, 0, 5, 6, 7, 4, 6, 5, 6, 5, 0, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 0, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 0, 7, 2, 0, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2},
{ 3, 7, 2, 2, 2, 3, 5, 4, 7, 5, 5, 5, 6, 2, 4, 7, 6, 6, 6, 4, 3, 4, 0, 3, 7, 7, 6, 5, 7, 5, 4, 6, 4, 4, 3, 4, 7, 7, 7, 4, 7, 4, 7, 3, 3, 3, 5, 2, 6, 4, 4, 4, 5, 7, 7, 7, 2, 5, 7, 4, 3, 6, 5, 7, 6, 3, 6, 6, 2, 3, 5, 6, 3, 2, 2, 5, 7, 6, 6, 4, 0, 7, 7, 3, 6, 4, 7, 6, 0, 5, 5, 2, 6, 6, 2, 5, 5, 7, 7, 0, 4, 4, 4, 5, 3, 5, 6, 7, 2, 5, 6, 5, 7, 7, 7, 6, 0, 5, 7, 6, 6, 7, 7, 6, 3, 5, 0, 6, 7, 7, 5, 3, 6, 7, 7, 6, 5, 5, 0, 3, 7, 7, 7, 4, 5, 4, 4, 4, 6, 4, 4, 7, 4, 2, 6, 3, 5, 7, 5, 5, 5, 6, 0, 2, 4, 6, 5, 3, 3, 3, 2, 7, 4, 7, 6, 7, 7, 7, 6, 7, 4, 6, 0, 5, 6, 6, 6, 7, 4, 5, 2, 3, 7, 5, 7, 6, 7, 7, 3, 3, 7, 5, 7, 4, 5, 5, 5, 2, 7, 7, 7, 4, 5, 7, 7, 5, 5, 7, 4, 5, 6, 7, 6, 4, 4, 0, 6, 6, 5, 7, 6, 4, 5, 4, 6, 7, 4, 7, 3, 6, 5, 7, 7, 6, 2, 7, 3, 2, 2, 6, 5, 2, 6, 6, 6, 4, 6, 4, 6, 6, 6, 3, 4, 7, 0, 5, 6, 7, 2, 6, 7, 6, 6, 3, 6, 7, 6, 3, 5, 4, 7, 5, 7, 2, 6, 3, 5, 5, 5, 6 },
{ 5, 6, 3, 4, 6, 4, 5, 7, 5, 6, 2, 2, 5, 4, 6, 5, 4, 4, 4, 3, 5, 2, 6, 4, 5, 7, 4, 5, 5, 5, 7, 6, 6, 6, 4, 7, 6, 0, 0, 7, 4, 5, 6, 6, 5, 4, 2, 2, 4, 7, 3, 6, 7, 6, 0, 7, 7, 3, 7, 6, 7, 7, 2, 2, 2, 7, 7, 6, 6, 3, 6, 4, 5, 7, 6, 6, 4, 5, 7, 2, 5, 7, 6, 4, 4, 4, 3, 6, 0, 3, 5, 4, 6, 7, 2, 3, 4, 6, 6, 6, 7, 3, 6, 7, 2, 3, 7, 6, 5, 4, 6, 6, 4, 7, 3, 3, 3, 4, 7, 7, 6, 0, 5, 5, 7, 7, 6, 6, 2, 5, 5, 4, 7, 7, 5, 3, 4, 2, 6, 5, 6, 4, 7, 5, 5, 5, 7, 7, 6, 7, 6, 3, 0, 0, 0, 5, 3, 7, 4, 7, 7, 7, 6, 4, 7, 6, 4, 0, 7, 5, 3, 5, 5, 5, 4, 7, 5, 6, 7, 4, 6, 7, 4, 6, 3, 2, 5, 6, 3, 5, 0, 0, 0, 6, 5, 4, 5, 4, 7, 7, 7, 6, 2, 7, 3, 7, 5, 5, 7, 3, 4, 7, 6, 5, 2, 4, 3, 5, 7, 6, 5, 7, 0, 3, 4, 7, 6, 6, 6, 7, 7, 0, 6, 5, 7, 3, 5, 2, 7, 7, 3, 6, 7, 7, 5, 5, 7, 7, 7, 2, 6, 7, 3, 5, 7, 0, 0, 0, 6, 4, 6, 3, 5, 7, 5, 2, 7, 6, 5, 3, 4, 0, 6, 6, 5, 7, 6, 0, 7, 6, 7, 7, 6, 3, 3, 2, 4, 4, 7, 2 },
{ 7, 5, 5, 5, 7, 7, 7, 6, 4, 4, 4, 3, 3, 3, 6, 0, 7, 6, 3, 5, 5, 6, 7, 5, 4, 4, 4, 7, 5, 4, 0, 7, 7, 7, 6, 6, 3, 7, 7, 7, 2, 4, 4, 4, 6, 0, 0, 0, 7, 5, 2, 5, 6, 4, 7, 6, 3, 7, 6, 7, 7, 3, 4, 5, 5, 5, 6, 3, 7, 7, 7, 2, 6, 5, 4, 6, 6, 0, 7, 7, 4, 5, 5, 5, 7, 2, 3, 4, 7, 6, 4, 4, 4, 6, 4, 7, 2, 2, 2, 6, 6, 6, 2, 7, 5, 6, 6, 6, 5, 3, 5, 0, 7, 6, 4, 3, 6, 7, 6, 7, 4, 3, 2, 4, 7, 5, 6, 3, 0, 4, 5, 7, 7, 7, 3, 6, 0, 0, 0, 7, 4, 3, 7, 5, 6, 6, 6, 7, 0, 5, 6, 7, 4, 6, 5, 6, 5, 0, 2, 4, 3, 6, 7, 3, 5, 2, 6, 7, 4, 6, 7, 5, 2, 7, 7, 7, 5, 6, 6, 6, 5, 2, 7, 4, 4, 4, 7, 6, 6, 6, 7, 7, 7, 4, 5, 2, 3, 5, 4, 6, 7, 3, 2, 6, 7, 4, 3, 7, 4, 7, 3, 6, 6, 7, 6, 5, 5, 5, 2, 2, 5, 7, 7, 7, 3, 4, 5, 3, 7, 7, 7, 5, 5, 5, 6, 6, 5, 6, 2, 6, 3, 6, 5, 3, 7, 6, 2, 2, 4, 0, 5, 4, 3, 7, 3, 7, 5, 6, 5, 7, 7, 7, 7, 6, 6, 3, 4, 6, 2, 3, 0, 7, 2, 0, 5, 7, 5, 5, 5, 6, 3, 5, 6, 4, 6, 7, 6, 5, 4, 2 },
}
_.FortuneTigerReelReSpinRange = {
{3, 3, 3},
{ 3, 3, 3 },
}
_.FortuneTigerReelReSpinReel = {
{8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200},
{8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200},
{8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200},
{ 8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200 },
{ 8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200 },
{ 8, 8, 0, 200, 200, 8, 8, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 200, 200, 8, 200, 200, 0, 8, 8, 200, 200, 8, 0, 0, 200, 200, 8, 200, 200, 0, 200, 200, 8, 8, 200, 200, 0, 0, 0, 200, 200, 8, 200, 200, 0, 0, 8, 200, 200, 8, 200, 200 },
}
_.FortuneTigerSymbol = {
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = {1},
pay_rate = {0, 0, 250},
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = {2},
pay_rate = {0, 0, 100},
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "玉饰",
is_wild = false,
group = {3},
pay_rate = {0, 0, 25},
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "福袋",
is_wild = false,
group = {4},
pay_rate = {0, 0, 10},
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "红包",
is_wild = false,
group = {5},
pay_rate = {0, 0, 8},
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "爆竹",
is_wild = false,
group = {6},
pay_rate = {0, 0, 5},
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "橘子",
is_wild = false,
group = {7},
pay_rate = {0, 0, 3},
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "SuperStack",
is_wild = false,
group = {8},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "Empty",
is_wild = false,
group = {200},
pay_rate = {0, 0, 0},
client_order = 0,
client_dsc = "",
},
[1] = {
id = 1,
name = "wild",
is_wild = true,
group = { 1 },
pay_rate = { 0, 0, 250 },
client_order = 1,
client_dsc = "",
},
[2] = {
id = 2,
name = "元宝",
is_wild = false,
group = { 2 },
pay_rate = { 0, 0, 100 },
client_order = 2,
client_dsc = "",
},
[3] = {
id = 3,
name = "玉饰",
is_wild = false,
group = { 3 },
pay_rate = { 0, 0, 25 },
client_order = 3,
client_dsc = "",
},
[4] = {
id = 4,
name = "福袋",
is_wild = false,
group = { 4 },
pay_rate = { 0, 0, 10 },
client_order = 4,
client_dsc = "",
},
[5] = {
id = 5,
name = "红包",
is_wild = false,
group = { 5 },
pay_rate = { 0, 0, 8 },
client_order = 5,
client_dsc = "",
},
[6] = {
id = 6,
name = "爆竹",
is_wild = false,
group = { 6 },
pay_rate = { 0, 0, 5 },
client_order = 6,
client_dsc = "",
},
[7] = {
id = 7,
name = "橘子",
is_wild = false,
group = { 7 },
pay_rate = { 0, 0, 3 },
client_order = 7,
client_dsc = "",
},
[8] = {
id = 8,
name = "SuperStack",
is_wild = false,
group = { 8 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
[200] = {
id = 200,
name = "Empty",
is_wild = false,
group = { 200 },
pay_rate = { 0, 0, 0 },
client_order = 0,
client_dsc = "",
},
}
_.FortuneTigerSymbolBetRatio = {
{
bet_ratio = 1,
},
{
bet_ratio = 1,
},
}
return _

File diff suppressed because it is too large Load Diff

View File

@ -2,51 +2,51 @@
local _ = {}
_.PrizeModelPrizeModelTypeA = {
[1] = {
id = 1,
ani_type = "big_win",
min_multiple = 10,
max_multiple = 25,
},
[2] = {
id = 2,
ani_type = "mega_win",
min_multiple = 25,
max_multiple = 50,
},
[3] = {
id = 3,
ani_type = "epic_win",
min_multiple = 50,
max_multiple = -1,
},
[1] = {
id = 1,
ani_type = "big_win",
min_multiple = 10,
max_multiple = 25,
},
[2] = {
id = 2,
ani_type = "mega_win",
min_multiple = 25,
max_multiple = 50,
},
[3] = {
id = 3,
ani_type = "epic_win",
min_multiple = 50,
max_multiple = -1,
},
}
_.PrizeModelPrizeModelTypeB = {
[1] = {
id = 1,
ani_type = "big_win",
min_multiple = 15,
max_multiple = 30,
},
[2] = {
id = 2,
ani_type = "mega_win",
min_multiple = 30,
max_multiple = 45,
},
[3] = {
id = 3,
ani_type = "epic_win",
min_multiple = 45,
max_multiple = 60,
},
[4] = {
id = 4,
ani_type = "epic_win",
min_multiple = 60,
max_multiple = -1,
},
[1] = {
id = 1,
ani_type = "big_win",
min_multiple = 15,
max_multiple = 30,
},
[2] = {
id = 2,
ani_type = "mega_win",
min_multiple = 30,
max_multiple = 45,
},
[3] = {
id = 3,
ani_type = "epic_win",
min_multiple = 45,
max_multiple = 60,
},
[4] = {
id = 4,
ani_type = "epic_win",
min_multiple = 60,
max_multiple = -1,
},
}
return _

View File

@ -44,75 +44,75 @@ func NewBigRat(s string) *big.Rat {
type (
// BetChangeList comment
BetChangeList struct {
Index int64
Index int64
BetChangeList float64
BetSizeIndex int64
BetSizeIndex int64
BetLevelIndex int64
}
// BetLevel comment
BetLevel struct {
Index int64
Index int64
BetLevel int64
}
// BetLine comment
BetLine struct {
Index int64
Index int64
BetLine int64
}
// BetSize comment
BetSize struct {
Index int64
Index int64
BetSize int64
}
// CashManiaMidItemInfo comment
CashManiaMidItemInfo struct {
Index int64
ItemID int64
Multi int64
Index int64
ItemID int64
Multi int64
FreeSpinCount int64
}
// CashManiaOthers comment
CashManiaOthers struct {
BaseWinPro float64
FreeWinPro float64
MaxWin int64
WinNudgePro float64
WinRespinPro float64
NoWinNudgePro float64
BaseWinPro float64
FreeWinPro float64
MaxWin int64
WinNudgePro float64
WinRespinPro float64
NoWinNudgePro float64
NoWinRespinPro float64
}
// CashManiaRandomItemWeight comment
CashManiaRandomItemWeight struct {
ID int64
ItemID int64
ID int64
ItemID int64
BaseWeight float64
FreeWeight float64
}
// FirstBet comment
FirstBet struct {
Index int64
BetSizeIndex int64
Index int64
BetSizeIndex int64
BetLevelIndex int64
}
// Formation comment
Formation struct {
SpinType int64
NodeType string
ID int64
SeqID int64
Reel string
Matrix string
Symbol string
FirstInitMethod int64
OtherInitMethod int64
SpinType int64
NodeType string
ID int64
SeqID int64
Reel string
Matrix string
Symbol string
FirstInitMethod int64
OtherInitMethod int64
FirstInitSymbols []int64
OtherInitSymbols []int64
}
// FortuneDragonBaseMultiplier comment
FortuneDragonBaseMultiplier struct {
WinRateMin float64
WinRateMax float64
ItemIds []int64
WinRateMin float64
WinRateMax float64
ItemIds []int64
MultiplierWeights []int64
}
// FortuneDragonFreeMultiplier comment
@ -123,126 +123,126 @@ type (
// FortuneDragonFreeMultiplierCount comment
FortuneDragonFreeMultiplierCount struct {
MultiplierCount int64
Weight int64
Weight int64
}
// FortuneDragonOthers comment
FortuneDragonOthers struct {
FreespinTriggerPro float64
FreeSpinCount int64
MaxWin int64
FreespinTriggerPro float64
FreeSpinCount int64
MaxWin int64
SureWinFreespinTriggerPro float64
SureWinBetMultiplier int64
SureWinBetMultiplier int64
}
// FortuneMouseOthers comment
FortuneMouseOthers struct {
RespinTriggerPro float64
MaxWin int64
ExtraWin int64
MaxWin int64
ExtraWin int64
}
// FortuneOxOthers comment
FortuneOxOthers struct {
RespinTriggerPro float64
Multiplier int64
MaxWin int64
Multiplier int64
MaxWin int64
}
// FortuneRabbitCashPrizeWeight comment
FortuneRabbitCashPrizeWeight struct {
ID int64
PrizeValue float64
Weight float64
ID int64
PrizeValue float64
Weight float64
NoWinWeight float64
}
// FortuneRabbitForceCashCountWeight comment
FortuneRabbitForceCashCountWeight struct {
ID int64
Count int64
ID int64
Count int64
Weight float64
}
// FortuneRabbitOthers comment
FortuneRabbitOthers struct {
FreespinTriggerPro float64
FreeSpinCount int64
MaxWin int64
FreeSpinCount int64
MaxWin int64
}
// GateofOlympusMultiplier comment
GateofOlympusMultiplier struct {
Multiple int64
ID int64
Weights []int64
ID int64
Weights []int64
}
// GateofOlympusReelChoose comment
GateofOlympusReelChoose struct {
ID int64
ID int64
IsFreeSpin bool
NodeType string
Weights []int64
NodeType string
Weights []int64
}
// JackpotPrize comment
JackpotPrize struct {
PrizeType int64
PipeIn int64
StartPoint int64
IsRolling bool
RollingTime int64
ReducePercent int64
PrizeType int64
PipeIn int64
StartPoint int64
IsRolling bool
RollingTime int64
ReducePercent int64
JackpotLimitByTotalBet int64
}
// MapRTPMode comment
MapRTPMode struct {
ID int64
ID int64
TypeWeight map[int64]*MapRTPModeTypeWeight
Desc string
Rtp float64
Desc string
Rtp float64
}
// MapRTPModeTypeWeight comment
MapRTPModeTypeWeight struct {
ID int64
ID int64
Weight int64
}
// Matrix comment
Matrix struct {
Type string
LinkType int64
Type string
LinkType int64
Direction int64
LineCount int64
Lines [][]int64
Form []int64
Lines [][]int64
Form []int64
}
// OptAuthenticate comment
OptAuthenticate struct {
Flag string
Order int64
ValidValues []string
Flag string
Order int64
ValidValues []string
InvalidValues []string
}
// OptGroup comment
OptGroup struct {
ID int64
Batch int64
ID int64
Batch int64
IsNewPlayer bool
StartTime string
EndTime string
Affect []int64
Weight []int64
StartTime string
EndTime string
Affect []int64
Weight []int64
}
// PrizeModel comment
PrizeModel struct {
ID int64
AniType string
ID int64
AniType string
MinMultiple int64
MaxMultiple int64
}
// Scatter comment
Scatter struct {
ScatterCount int64
FreeSpinBouts int64
ScatterCount int64
FreeSpinBouts int64
FreeSpinExtraBouts int64
BasePayrate int64
FreePayrate int64
BasePayrate int64
FreePayrate int64
}
// ScatterFreeChoose comment
ScatterFreeChoose struct {
ID int64
ID int64
FreeSpinTimes int64
TouchTimesMin int64
TouchTimesMax int64
@ -250,24 +250,24 @@ type (
// SimulatorFSMultiLevel comment
SimulatorFSMultiLevel struct {
Level int64
Min int64
Max int64
Min int64
Max int64
}
// SuperStackWeight comment
SuperStackWeight struct {
ID int64
ID int64
ItemID int64
Weight float64
}
// Symbol comment
Symbol struct {
ID int64
Name string
IsWild bool
Group []int64
PayRate []int64
ID int64
Name string
IsWild bool
Group []int64
PayRate []int64
ClientOrder int64
ClientDsc string
ClientDsc string
}
// SymbolBetRatio comment
SymbolBetRatio struct {
@ -275,13 +275,13 @@ type (
}
// TestRandomWeight comment
TestRandomWeight struct {
ID int64
Time float64
ID int64
Time float64
Weight float64
}
// Text comment
Text struct {
Type string
Type string
Texts []*TextTexts
}
// TextTexts comment
@ -291,25 +291,25 @@ type (
}
// Vector comment
Vector struct {
Choice int64
Ratio float64
Vector []int64
Choice int64
Ratio float64
Vector []int64
Procedure string
}
// VectorDemand comment
VectorDemand struct {
Choice int64
MinRatio float64
MaxRatio float64
Choice int64
MinRatio float64
MaxRatio float64
Procedure string
Count int64
Count int64
}
// VectorForceWin comment
VectorForceWin struct {
Choice int64
Choice int64
MinRatio float64
MaxRatio float64
Weight float64
Weight float64
}
// CashManiaBetBetChangeList comment
CashManiaBetBetChangeList = BetChangeList
@ -850,5 +850,4 @@ type (
// TestSymbolBetRatio comment
TestSymbolBetRatio = SymbolBetRatio
)
)

View File

@ -19,7 +19,7 @@ func (sm *SlotsMgr) Enter(s *base.SlotsSession, gameId int64) (*cli.SlotsEnterRe
logger.Logger.Error("[slotsMgr.Enter] gameId not exist")
return nil, errors.New("gameId not exist")
}
player.Get(s).Book.Coin.Set(s.Coin())
player.Init(s)

View File

@ -2136,6 +2136,7 @@ func (this *TienLenSceneData) SaveCustomLog() {
EndTs: time.Now().Unix(),
State: state,
Creator: this.GetCreator(),
Price: this.GetCustom().GetPrice(),
}
for snid := range this.BilledList {
var items []*model.Item

View File

@ -2639,7 +2639,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
GameId: int64(sceneEx.GameId),
GameFreeId: int64(sceneEx.GetGameFreeId()),
})
mq.Write(&model.CustomLogAward{
award := &model.CustomLogAward{
Platform: p.Platform,
CycleId: sceneEx.CycleID,
SnId: p.SnId,
@ -2647,7 +2647,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
Awards: items,
StartTs: sceneEx.GameStartTime.Unix(),
EndTs: time.Now().Unix(),
})
Price: sceneEx.WGCreateScene.GetCustom().GetPrice(),
ImageURL: sceneEx.WGCreateScene.GetCustom().GetImageURL(),
}
mq.Write(award, mq.DBCustomLogAward)
mq.Write(award, mq.WorldCustomAward)
sceneEx.PlayerAward[p.SnId] = &items
}
}

View File

@ -157,6 +157,12 @@ type AllConfig struct {
*webapi.ClientUpgrade
//弹窗配置
*webapi.PopUpWindowConfig
// 竞技馆抽奖活动
*webapi.LotteryConfig
// 竞技馆抽奖展示配置
LotteryShows map[int64]*webapi.ShowLottery
// 竞技馆抽奖必中配置
LotteryUser map[int64]*webapi.UserLottery
}
type GlobalConfig struct {
@ -190,6 +196,8 @@ func (cm *ConfigMgr) GetConfig(platform string) *AllConfig {
RoomConfig: make(map[int32]*webapi.RoomConfig),
RoomTypeMap: make(map[int32][]*webapi.RoomConfig),
RoomConfigSystem: make(map[int32]*webapi.RoomConfigSystem),
LotteryUser: make(map[int64]*webapi.UserLottery),
LotteryShows: make(map[int64]*webapi.ShowLottery),
}
cm.platform[platform] = c
}
@ -502,3 +510,15 @@ func (cm *ConfigMgr) GetRoomConfig(plt string, lastChannel string) *gamehall.SCR
}
return pack
}
func (cm *ConfigMgr) GetLotteryConfig(plt string, id int64) *webapi.LotteryInfo {
d := cm.GetConfig(plt)
if d != nil && d.LotteryConfig != nil {
for _, v := range d.LotteryConfig.GetList() {
if v.GetId() == id {
return v
}
}
}
return nil
}

View File

@ -42,6 +42,7 @@ type CustomLog struct {
List []RoundInfo // 对局记录
StartTs, EndTs int64 // 开始,结束时间
State int32 // 0正常结束 1后台中途解散
Price int64 // 奖励价值
}
// CustomLogAward 竞技馆玩家奖励记录
@ -52,6 +53,8 @@ type CustomLogAward struct {
Name string
Awards []*Item
StartTs, EndTs int64 // 开始,结束时间
Price int64
ImageURL string
}
type CustomLogAwardFindReq struct {

View File

@ -3,6 +3,7 @@ package model
import (
"encoding/json"
"os"
"time"
"github.com/globalsign/mgo"
"mongo.games.com/goserver/core/logger"
@ -84,14 +85,14 @@ type GameParam struct {
PermitInitScore int64 // 赛季通行证初始积分
GuideStepMaxNum int32 // 新手引导步骤最大值
GuideTs int64 // 新手引导时间戳,小于这个时间的玩家不显示新手引导
CustomAwardUpdateTime int // 竞技馆奖励更新时间
CustomAwardUpdateTime int // 竞技馆奖励更新时间,单位秒
CustomAwardMinAddTime int // 竞技馆假奖励方法周期,单位秒
CustomAwardMaxAddTime int // 竞技馆假奖励方法周期,单位秒
AdminPassword string // 管理员密码
UseAdminPassword bool // 是否使用管理员密码
CloseCustomRoomCreate bool // 关闭自定义房间创建
ClientVersion int32 // 客户端版本号
ClientVersionChannel []string // 客户端版本号包渠道
ClientVersionChannel []string // 客户端版本号包渠道
}
var GameParamPath = "../data/gameparam.json"
@ -238,3 +239,11 @@ func InitGameParam() {
GameParamData.AdminPassword = "fjslowopcserg"
}
}
// BackTimeUnixToLocalTimeUnix 后台时间戳转本地时间戳
func BackTimeUnixToLocalTimeUnix(ts int64) int64 {
_, offset := time.Now().Zone()
backOffset := GameParamData.BackendTimeLocal * 3600
ts += int64(backOffset - offset)
return ts
}

View File

@ -1,70 +1,77 @@
package model
import (
"github.com/globalsign/mgo/bson"
"time"
)
const (
LOTTERY_LOG_MAX = 30
)
// 玩家对于每个抽奖活动的状态
var (
LotteryDBName = "user"
LotteryCollName = "user_lottery"
)
// 奖池记录
type GameLotteryLog struct {
Time int32 //时间
Nick string //昵称
Card []int32 //牌数据
Kind int32 //牌型
Coin int32 //获得奖金
}
type GameLottery struct {
Id int32 //游戏场次id
GameId int32 //游戏id
Value int64 //彩金数量
Logs []*GameLotteryLog //彩金获得记录
}
type Lottery struct {
Id bson.ObjectId `bson:"_id"`
Dirty int32 `bson:"-"`
Platform string //平台编号
Lotteries map[int32]*GameLottery //奖金池
CreateTime time.Time //创建日期
UpdateTime time.Time //最后更新日期
SnId int32 // 玩家id
CId int64 // 抽奖配置Id
Code []string // 抽奖码
StartTs int64 // 抽奖时间
CostCard int64 // 消耗房卡
ReCostCard int // 不足获取抽奖码时消耗房卡记录
}
func NewLottery(platform string) *Lottery {
cl := &Lottery{
Id: bson.NewObjectId(),
Dirty: 1,
Platform: platform,
CreateTime: time.Now(),
Lotteries: make(map[int32]*GameLottery),
}
return cl
type GetLotteryReq struct {
Platform string
SnId int32
CId int64
StartTs int64
}
func GetAllLottery() (ret []Lottery, err error) {
type GetLotteryResp struct {
Lottery []*Lottery
}
// GetLottery 获取玩家对于每个抽奖活动的状态
// plt 平台
// snid 玩家id
// cid 抽奖配置Id
// startTs 活动开始时间范围,大于这个时间的活动
func GetLottery(plt string, snid int32, cid, startTs int64) (ret []*Lottery, err error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
err = rpcCli.CallWithTimeout("LotterySvc.GetAllLottery", struct{}{}, &ret, time.Second*30)
return
req := &GetLotteryReq{
Platform: plt,
SnId: snid,
CId: cid,
StartTs: startTs,
}
resp := &GetLotteryResp{}
err = rpcCli.CallWithTimeout("LotterySvc.Get", req, resp, time.Second*30)
if err != nil {
return nil, err
}
return resp.Lottery, nil
}
func UpsertLottery(item *Lottery) (err error) {
type UpsertLotteryReq struct {
Platform string
Lottery []*Lottery
}
func UpsertLottery(plt string, item ...*Lottery) (err error) {
if rpcCli == nil {
return ErrRPClientNoConn
}
req := &UpsertLotteryReq{
Platform: plt,
Lottery: item,
}
var ret bool
err = rpcCli.CallWithTimeout("LotterySvc.UpsertLottery", item, &ret, time.Second*30)
err = rpcCli.CallWithTimeout("LotterySvc.Upsert", req, &ret, time.Second*30)
return
}

View File

@ -1,44 +0,0 @@
package model
import "encoding/json"
type LotteryConfiger interface {
HitRatio(card []int32, kind int32) int32
GetTaxRatio() int32
}
type LotteryConfigParser func(cfg string) (LotteryConfiger, error)
type KindOfCard struct {
Kind int32 //牌型
Ratio int32 //奖池比例,万分比
}
// 彩金配置
type LotteryConfig struct {
Type int32 //奖池类型 0:税收
Ratio int32 //比例 百分比
Koc []KindOfCard //特殊牌型获得奖池占比
}
func (this *LotteryConfig) GetTaxRatio() int32 {
return this.Ratio
}
func (this *LotteryConfig) HitRatio(card []int32, kind int32) int32 {
//@testcode
//return 500
//@testcode
for i := 0; i < len(this.Koc); i++ {
if this.Koc[i].Kind == kind {
return this.Koc[i].Ratio
}
}
return 0
}
func CommonLotteryConfigParser(cfg string) (LotteryConfiger, error) {
dncfg := &LotteryConfig{}
err := json.Unmarshal([]byte(cfg), dncfg)
return dncfg, err
}

129
model/lotterycode.go Normal file
View File

@ -0,0 +1,129 @@
package model
import "time"
var (
LotteryCodeDBName = "log"
LotteryCodeCollName = "log_lotterycode"
)
// 玩家抽奖活动开奖码
type LotteryCode struct {
Platform string `bson:"-"`
SnId int32 // 玩家id
CId int64 // 抽奖配置id
StartTs int64 // 抽奖开始时间
Code string // 开奖码
Index int // 开奖码序号
}
type UpsertLotteryCodeReq struct {
Platform string
Item *LotteryCode
}
// UpsertLotteryCode 记录玩家抽奖活动开奖码
func UpsertLotteryCode(plt string, item *LotteryCode) (err error) {
if rpcCli == nil {
return ErrRPClientNoConn
}
req := &UpsertLotteryCodeReq{
Platform: plt,
Item: item,
}
ret := false
err = rpcCli.CallWithTimeout("LotteryCodeSvc.Upsert", req, &ret, time.Second*30)
if err != nil {
return err
}
return nil
}
type GetLotteryCodeReq struct {
Platform string
Code string
CId int64
StartTs int64
}
type GetLotteryCodeResp struct {
Item *LotteryCode
}
// GetLotteryCode 获取玩家抽奖活动开奖码
func GetLotteryCode(plt string, code string, cid int64, startTs int64) (*LotteryCode, error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
req := &GetLotteryCodeReq{
Platform: plt,
Code: code,
CId: cid,
StartTs: startTs,
}
ret := &GetLotteryCodeResp{}
err := rpcCli.CallWithTimeout("LotteryCodeSvc.Get", req, ret, time.Second*30)
if err != nil {
return nil, err
}
return ret.Item, nil
}
// GetLotteryCodeJoinNumReq 获取参与人数
type GetLotteryCodeJoinNumReq struct {
Platform string
CId int64
StartTs int64
}
// GetLotteryCodeJoinNum 获取参与人数
func GetLotteryCodeJoinNum(plt string, cid int64, startTs int64) (int, error) {
if rpcCli == nil {
return 0, ErrRPClientNoConn
}
req := &GetLotteryCodeJoinNumReq{
Platform: plt,
CId: cid,
StartTs: startTs,
}
ret := 0
err := rpcCli.CallWithTimeout("LotteryCodeSvc.GetJoinNum", req, &ret, time.Second*30)
if err != nil {
return 0, err
}
return ret, nil
}
// GetLotteryCodeRandomReq 获取随机开奖码
type GetLotteryCodeRandomReq struct {
Platform string
CId int64
StartTs int64
Index int
Tp int
}
// GetLotteryCodeRandom 获取随机开奖码
func GetLotteryCodeRandom(plt string, cid int64, startTs int64, tp, index int) (*LotteryCode, error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
req := &GetLotteryCodeRandomReq{
Platform: plt,
CId: cid,
StartTs: startTs,
Index: index,
Tp: tp,
}
ret := &GetLotteryCodeResp{}
err := rpcCli.CallWithTimeout("LotteryCodeSvc.GetRandom", req, ret, time.Second*30)
if err != nil {
return nil, err
}
return ret.Item, nil
}

81
model/lotterydata.go Normal file
View File

@ -0,0 +1,81 @@
package model
import "time"
var (
LotteryDataDBName = "log"
LotteryDataCollName = "log_lotterydata"
)
// LotteryData 单个抽奖活动的状态
type LotteryData struct {
Platform string `bson:"-"`
CId int64 // 抽奖配置id
StartTs int64 // 开始时间
EndTs int64 // 结束时间
WinTs int64 // 发奖时间
Reward []*ItemInfo // 奖励
Price int64 // 价值,美分
TotalCode int64 // 总开奖码数
RobotCodeNum int64 // 机器人开奖码数
ImageURL string // 图片地址
Code int // 抽奖码序号
PlayerIndex int // 玩家序号
RobotIndex int // 机器人序号
IsSend bool // 是否发奖
PlayerNum int32 // 参与人数
CostCard int64 // 所有消耗房卡数量
Format string // 兑奖码格式
CustomAward int64 // 竞技馆奖品价值
RobotCodeCount int // 机器人已发放开奖码数量
Num int // 期数
SnId int32 // 玩家ID
Name string // 玩家名字
WinCostCard int64 // 中奖玩家消耗房卡数量
WinCode string // 中奖码
IsRobot bool // 是否机器人中奖
}
type GetLotteryDataReq struct {
Platform string
}
type GetLotteryDataResp struct {
Data []*LotteryData
}
func GetLotteryData(plt string) (ret []*LotteryData, err error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
req := &GetLotteryDataReq{
Platform: plt,
}
resp := &GetLotteryDataResp{}
err = rpcCli.CallWithTimeout("LotteryDataSvc.Get", req, resp, time.Second*30)
if err != nil {
return nil, err
}
return resp.Data, nil
}
type UpsertLotteryDataReq struct {
Platform string
Data []*LotteryData
}
func UpsertLotteryData(plt string, data []*LotteryData) (err error) {
if rpcCli == nil {
return
}
req := &UpsertLotteryDataReq{
Platform: plt,
Data: data,
}
ret := false
return rpcCli.CallWithTimeout("LotteryDataSvc.Upsert", req, &ret, time.Second*30)
}

View File

@ -2,102 +2,63 @@ package model
import (
"time"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
)
// 中奖记录
var (
LotteryLogDBName = "log"
LotteryLogCollName = "log_lottery"
)
type LotteryAward struct {
Id int64 // 奖品Id
N int64 // 奖品数量
}
type LotteryLog struct {
LogId bson.ObjectId `bson:"_id"`
Platform string //平台名称
GameFreeId int32
GameId int32
SnId int32
NickName string
IsRob bool
Cards []int32
Kind int32
Coin int32 //变化金额
Pool int64 //变化前彩金池数量
RecId string
Time time.Time
Platform string `bson:"-"`
CId int64 // 抽奖配置Id
CTime time.Time // 开始时间
Num int32 // 期数
SnId int32 // 中奖玩家
Name string // 中奖玩家昵称
PlayerNum int64 // 参与人数
Code string // 中奖码
CostCard int64 // 消耗房卡
IsRobot bool // 是否机器人
Award []*LotteryAward // 奖品
Price int64 // 奖品价值
IsMust bool // 是否必中
ImageURL string // 图片地址
Ts int64 // 发奖时间
}
func NewLotteryLog() *LotteryLog {
log := &LotteryLog{LogId: bson.NewObjectId()}
return log
type GetLotteryLogReq struct {
Platform string
Num int
}
func NewLotteryLogEx(platform string, gamefreeid, gameid, snid int32, nick string, isRob bool, cards []int32, kind, coin int32, pool int64, recId string) *LotteryLog {
cl := NewLotteryLog()
cl.SnId = snid
cl.Platform = platform
cl.NickName = nick
cl.IsRob = isRob
cl.GameFreeId = gamefreeid
cl.GameId = gameid
cl.Cards = cards
cl.Kind = kind
cl.Coin = coin
cl.RecId = recId
cl.Pool = pool
cl.Time = time.Now()
return cl
}
func InsertLotteryLog(platform string, gamefreeid, gameid, snid int32, nick string, isRob bool, cards []int32, kind, coin int32, pool int64, recId string) error {
if rpcCli == nil {
return ErrRPClientNoConn
}
var ret bool
cl := NewLotteryLogEx(platform, gamefreeid, gameid, snid, nick, isRob, cards, kind, coin, pool, recId)
return rpcCli.CallWithTimeout("LotteryLogSvc.InsertLotteryLog", cl, &ret, time.Second*30)
type GetLotteryLogResp struct {
LotteryLog []*LotteryLog
}
func InsertLotteryLogs(logs ...*LotteryLog) (err error) {
if rpcCli == nil {
return ErrRPClientNoConn
}
var ret bool
return rpcCli.CallWithTimeout("LotteryLogSvc.InsertLotteryLogs", logs, &ret, time.Second*30)
}
type RemoveLotteryLogArgs struct {
Plt string
Ts time.Time
}
func RemoveLotteryLog(plt string, ts time.Time) (ret *mgo.ChangeInfo, err error) {
func GetLotteryLogs(plt string, count int) ([]*LotteryLog, error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
args := &RemoveLotteryLogArgs{
Plt: plt,
Ts: ts,
}
err = rpcCli.CallWithTimeout("LotteryLogSvc.RemoveLotteryLog", args, &ret, time.Second*30)
return
}
type GetLotteryLogBySnidAndLessTsArgs struct {
Plt string
Id int32
Ts time.Time
}
req := &GetLotteryLogReq{
Platform: plt,
Num: count,
}
ret := &GetLotteryLogResp{
LotteryLog: []*LotteryLog{},
}
err := rpcCli.CallWithTimeout("LotteryLogSvc.GetLotteryLogs", req, ret, time.Second*30)
if err != nil {
return nil, err
}
func GetLotteryLogBySnidAndLessTs(plt string, id int32, ts time.Time) (ret []LotteryLog, err error) {
if rpcCli == nil {
return nil, ErrRPClientNoConn
}
args := &GetLotteryLogBySnidAndLessTsArgs{
Plt: plt,
Id: id,
Ts: ts,
}
err = rpcCli.CallWithTimeout("LotteryLogSvc.GetLotteryLogBySnidAndLessTs", args, &ret, time.Second*30)
return
return ret.LotteryLog, nil
}

View File

@ -40,6 +40,7 @@ const (
MSGTYPE_ITEM_CHANGE //背包使用兑换
MSGTYPE_RANK_PermitReward // 通行证排行奖励
MSGTYPE_ClientUpgrade // 客户端升级
MSGTYPE_Lottery // 开奖码抽奖
)
const (

View File

@ -8,7 +8,7 @@ const (
BackGameRecord = "evt_gamerec"
BackLogin = "evt_login"
BackOnline = "evt_online"
BackPhoneLottery = "evt_phonelottery"
BackPhoneLottery = "evt_phonelottery" // 积分抽奖
BackReliefund = "log_relieffund"
BackSystemFreeGive = "evt_systemfreegive"
BackSystemPermitCycle = "back_permitcycle"
@ -27,8 +27,9 @@ const ()
// worldsrv 消息
const (
WorldLogCoinAck = "world_logcoin_ack"
WorldInviteAck = "world_invite_ack"
WorldLogCoinAck = "world_logcoin_ack"
WorldInviteAck = "world_invite_ack"
WorldCustomAward = "world_customaward"
)
// dbproxy 消息
@ -40,10 +41,13 @@ const (
DBInvite = "db_invite"
DBAPILog = "db_apilog"
DBGiveLog = "db_givelog"
DBLotteryCode = "db_lotterycode" // 玩家抽奖码
DBLotteryLog = "db_lotterylog" // 中奖记录
)
// ranksrv 消息
const (
RankCustomLogAward = "rank_customlog_award" // 房卡场对局奖励
RankLotteryLog = "rank_lotterylog" // 中奖记录
)

View File

@ -166,9 +166,11 @@
- 5581~5599
### fortunedragon.prot
- 5600~5609
### fortunerabbit.prot
- 5610~5619
### game.proto(玩家离开)

View File

@ -2117,6 +2117,7 @@ type PrivateRoomInfo struct {
CreateTs int64 `protobuf:"varint,11,opt,name=CreateTs,proto3" json:"CreateTs,omitempty"` //创建时间戳
State int32 `protobuf:"varint,12,opt,name=State,proto3" json:"State,omitempty"` //房间状态 0等待中 1进行中 2已结束
Players []*PrivatePlayerInfo `protobuf:"bytes,13,rep,name=Players,proto3" json:"Players,omitempty"` //玩家列表
IsSystem bool `protobuf:"varint,14,opt,name=IsSystem,proto3" json:"IsSystem,omitempty"` //是否系统创建
}
func (x *PrivateRoomInfo) Reset() {
@ -2242,6 +2243,13 @@ func (x *PrivateRoomInfo) GetPlayers() []*PrivatePlayerInfo {
return nil
}
func (x *PrivateRoomInfo) GetIsSystem() bool {
if x != nil {
return x.IsSystem
}
return false
}
//PACKET_SC_GETPRIVATEROOMLIST
type SCGetPrivateRoomList struct {
state protoimpl.MessageState
@ -4394,7 +4402,7 @@ var file_game_proto_rawDesc = []byte{
0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x49,
0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x55, 0x73, 0x65, 0x52, 0x6f, 0x6c, 0x65,
0x49, 0x64, 0x22, 0xa4, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f,
0x49, 0x64, 0x22, 0xc0, 0x03, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72,
0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65,
0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64,
@ -4420,384 +4428,386 @@ var file_game_proto_rawDesc = []byte{
0x74, 0x65, 0x12, 0x35, 0x0a, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x0d, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50,
0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x57, 0x0a, 0x14, 0x53, 0x43, 0x47,
0x65, 0x74, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73,
0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54,
0x70, 0x12, 0x2f, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x19, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76,
0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x44, 0x61, 0x74,
0x61, 0x73, 0x22, 0x75, 0x0a, 0x0f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f,
0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73,
0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12,
0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49,
0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53,
0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x53, 0x63, 0x65, 0x6e, 0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x09, 0x51, 0x52,
0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46,
0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d,
0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49,
0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12,
0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43,
0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43,
0x6f, 0x69, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e,
0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69,
0x6e, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01,
0x28, 0x05, 0x52, 0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d,
0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09,
0x4d, 0x61, 0x78, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65,
0x61, 0x74, 0x6f, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61,
0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18,
0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12,
0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52,
0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x51, 0x75,
0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47,
0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61,
0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74,
0x65, 0x12, 0x2f, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x51,
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e,
0x66, 0x6f, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c,
0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a,
0x09, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61,
0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73,
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65,
0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x22, 0x36, 0x0a, 0x0b,
0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c,
0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65,
0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04,
0x4c, 0x69, 0x73, 0x74, 0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a,
0x0d, 0x53, 0x43, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16,
0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c,
0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a, 0x11, 0x43,
0x53, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65,
0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65,
0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65,
0x53, 0x69, 0x7a, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28,
0x05, 0x52, 0x03, 0x4f, 0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74,
0x54, 0x69, 0x6d, 0x65, 0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e,
0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74,
0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12,
0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x79, 0x70,
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x79, 0x70,
0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20,
0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61,
0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74,
0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69,
0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d,
0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20,
0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a,
0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20,
0x01, 0x28, 0x05, 0x52, 0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70,
0x65, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28,
0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x49, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x74,
0x69, 0x63, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x18,
0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1a, 0x0a,
0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52,
0x08, 0x4c, 0x6f, 0x6f, 0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43,
0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09,
0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12,
0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72,
0x6c, 0x22, 0xc0, 0x01, 0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64,
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65,
0x69, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c,
0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47,
0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64,
0x12, 0x18, 0x0a, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
0x03, 0x52, 0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f,
0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f,
0x74, 0x61, 0x6c, 0x4f, 0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54,
0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68,
0x54, 0x79, 0x70, 0x65, 0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, 0x72,
0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70,
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d,
0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e,
0x6f, 0x74, 0x69, 0x63, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47,
0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d,
0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f,
0x72, 0x64, 0x52, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69,
0x73, 0x74, 0x54, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73,
0x74, 0x54, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72,
0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x22, 0x7c, 0x0a, 0x0d, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74,
0x72, 0x6f, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12,
0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
0x52, 0x07, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x73, 0x53,
0x79, 0x73, 0x74, 0x65, 0x6d, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x49, 0x73, 0x53,
0x79, 0x73, 0x74, 0x65, 0x6d, 0x22, 0x57, 0x0a, 0x14, 0x53, 0x43, 0x47, 0x65, 0x74, 0x50, 0x72,
0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a,
0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x2f, 0x0a,
0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67,
0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52,
0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0x75,
0x0a, 0x0f, 0x43, 0x53, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66,
0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47,
0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x47,
0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20,
0x03, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x63, 0x65, 0x6e, 0x65,
0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x63, 0x65, 0x6e,
0x65, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x09, 0x51, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
0x6e, 0x66, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49,
0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65,
0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52,
0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f,
0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18,
0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x42, 0x61, 0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12,
0x1c, 0x0a, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a,
0x07, 0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
0x43, 0x75, 0x72, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x78, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x78, 0x50,
0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72,
0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x12,
0x1a, 0x0a, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28,
0x05, 0x52, 0x08, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72,
0x61, 0x6d, 0x73, 0x22, 0xb3, 0x01, 0x0a, 0x0f, 0x53, 0x43, 0x51, 0x75, 0x65, 0x72, 0x79, 0x52,
0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49,
0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x07, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x64,
0x73, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x05, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x69, 0x74, 0x65, 0x12, 0x2f, 0x0a,
0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x51, 0x52, 0x6f, 0x6f, 0x6d,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x39,
0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09,
0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x4d, 0x0a, 0x09, 0x47, 0x61, 0x6d,
0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72,
0x65, 0x65, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65,
0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01,
0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x65, 0x63, 0x18, 0x03, 0x20,
0x01, 0x28, 0x05, 0x52, 0x03, 0x53, 0x65, 0x63, 0x22, 0x36, 0x0a, 0x0b, 0x53, 0x43, 0x47, 0x61,
0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18,
0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c,
0x2e, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74,
0x22, 0x27, 0x0a, 0x0d, 0x43, 0x53, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69,
0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x5c, 0x0a, 0x0d, 0x53, 0x43, 0x41,
0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x53, 0x69, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d,
0x49, 0x64, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70,
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52,
0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73,
0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x46,
0x6f, 0x72, 0x63, 0x65, 0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52,
0x6f, 0x6f, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65,
0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74,
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d,
0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01,
0x28, 0x05, 0x52, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f,
0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d,
0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x46, 0x6f, 0x72, 0x63,
0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x43, 0x46, 0x6f, 0x72, 0x63,
0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43,
0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x77, 0x0a, 0x11, 0x43, 0x53, 0x52, 0x65, 0x63,
0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06,
0x50, 0x61, 0x67, 0x65, 0x4e, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61,
0x67, 0x65, 0x4e, 0x6f, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65,
0x12, 0x10, 0x0a, 0x03, 0x4f, 0x70, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4f,
0x70, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18,
0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65,
0x22, 0x9a, 0x03, 0x0a, 0x0c, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6f, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x53, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x02,
0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x54, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43,
0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f,
0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d,
0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x54, 0x79, 0x70, 0x65, 0x4e, 0x61, 0x6d,
0x65, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69,
0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x07,
0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1a, 0x0a,
0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x61, 0x74,
0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52,
0x0c, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a,
0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49,
0x6d, 0x67, 0x55, 0x72, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49,
0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x49,
0x64, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x18, 0x0c, 0x20, 0x01, 0x28,
0x05, 0x52, 0x06, 0x49, 0x73, 0x4c, 0x6f, 0x6f, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x6f,
0x70, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x4c, 0x6f, 0x6f,
0x70, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e,
0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e,
0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x55,
0x72, 0x6c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x22, 0xc0, 0x01,
0x0a, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x1e,
0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x69, 0x64, 0x12, 0x2c,
0x0a, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f,
0x67, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x47, 0x61, 0x6d, 0x65, 0x44,
0x65, 0x74, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x4c, 0x6f, 0x67, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54,
0x6f, 0x74, 0x61, 0x6c, 0x49, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f,
0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4f,
0x75, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x54, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x18,
0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65,
0x22, 0xbc, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x41, 0x6e, 0x64,
0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c,
0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2a, 0x0a, 0x04, 0x4c,
0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65,
0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x4e, 0x6f, 0x74, 0x69, 0x63,
0x65, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x05, 0x47, 0x6c, 0x69, 0x73, 0x74,
0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c,
0x6c, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x52, 0x05,
0x47, 0x6c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73,
0x18, 0x04, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x47, 0x6c, 0x69, 0x73, 0x74, 0x54, 0x73, 0x22,
0x10, 0x0a, 0x0e, 0x53, 0x43, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52, 0x6f,
0x6f, 0x6d, 0x22, 0x7c, 0x0a, 0x0d, 0x53, 0x43, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x52,
0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20,
0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x4f,
0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b,
0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75,
0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52,
0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x73, 0x46, 0x6f, 0x72, 0x63,
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x73, 0x46, 0x6f, 0x72, 0x63, 0x65,
0x22, 0x21, 0x0a, 0x0b, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12,
0x12, 0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d,
0x6f, 0x64, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x0b, 0x53, 0x43, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52,
0x6f, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c,
0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x16,
0x0a, 0x06, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x4d, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x6f,
0x64, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61,
0x72, 0x74, 0x22, 0x49, 0x0a, 0x0c, 0x53, 0x43, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x53, 0x74, 0x61,
0x72, 0x74, 0x12, 0x39, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18,
0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c,
0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x3b, 0x0a,
0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x77, 0x69, 0x74, 0x68, 0x46, 0x6c,
0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x18, 0x02,
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x4d, 0x0a, 0x0b, 0x43, 0x53,
0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e,
0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74,
0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x04, 0x20, 0x03,
0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01, 0x0a, 0x0b, 0x53, 0x43,
0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a, 0x06, 0x4f, 0x70, 0x43,
0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x67, 0x61, 0x6d, 0x65,
0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
0x65, 0x22, 0x3b, 0x0a, 0x11, 0x43, 0x53, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x77, 0x69,
0x74, 0x68, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x18, 0x01,
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x4d, 0x61,
0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x4d, 0x61, 0x72, 0x6b, 0x22, 0x4d,
0x0a, 0x0b, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a,
0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x18, 0x0a,
0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x18, 0x04, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0xa4, 0x01,
0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x33, 0x0a,
0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e,
0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f,
0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
0x03, 0x50, 0x6f, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18,
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14,
0x0a, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50,
0x61, 0x72, 0x61, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
0x52, 0x02, 0x54, 0x73, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64,
0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e,
0x75, 0x6d, 0x22, 0x49, 0x0a, 0x0b, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70,
0x65, 0x12, 0x22, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e,
0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70,
0x65, 0x52, 0x02, 0x54, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb8, 0x03,
0x0a, 0x0e, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f,
0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65,
0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65,
0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e,
0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05,
0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74,
0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c,
0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74,
0x12, 0x2a, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d,
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d,
0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20,
0x03, 0x28, 0x09, 0x52, 0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64,
0x18, 0x0a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65,
0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28,
0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79,
0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61,
0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65,
0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f,
0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f,
0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18,
0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08,
0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08,
0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x49, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f,
0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d,
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a,
0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a,
0x06, 0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53,
0x6f, 0x72, 0x74, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52,
0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c,
0x69, 0x73, 0x74, 0x22, 0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x22, 0x3a, 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x12, 0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28,
0x0b, 0x32, 0x16, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f,
0x6d, 0x54, 0x79, 0x70, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a,
0xb1, 0x0a, 0x0a, 0x11, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75,
0x63, 0x65, 0x73, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01,
0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74,
0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a,
0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69,
0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64,
0x10, 0xfa, 0x07, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d,
0x49, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b,
0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78,
0x69, 0x73, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73,
0x6f, 0x6e, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80,
0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e,
0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08,
0x12, 0x2c, 0x0a, 0x27, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57,
0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f,
0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27,
0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77,
0x43, 0x6c, 0x75, 0x62, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x59, 0x6f, 0x75, 0x72, 0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x59, 0x6f, 0x75, 0x72, 0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0x98, 0x08, 0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65,
0x6e, 0x65, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65,
0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x53, 0x63, 0x65, 0x6e, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74,
0x61, 0x69, 0x6e, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x10, 0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43,
0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xa2, 0x08, 0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68,
0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3,
0x08, 0x12, 0x16, 0x0a, 0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c,
0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69,
0x6c, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43,
0x6f, 0x75, 0x6e, 0x74, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca,
0x08, 0x12, 0x15, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f,
0x74, 0x45, 0x78, 0x69, 0x74, 0x10, 0xcb, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x10, 0xcc,
0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x72, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xcd, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x43, 0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68,
0x10, 0xce, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65,
0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e,
0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10,
0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73,
0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28,
0x09, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x61,
0x72, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x50, 0x61, 0x72, 0x61, 0x6d,
0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73,
0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03,
0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0x49,
0x0a, 0x0b, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x22, 0x0a,
0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65,
0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x52, 0x02, 0x54,
0x70, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
0x05, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0xb8, 0x03, 0x0a, 0x0e, 0x52, 0x6f,
0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02,
0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x1a, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02,
0x4f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f,
0x72, 0x74, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x18, 0x07, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x49, 0x74,
0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x06,
0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x08, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x67,
0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f,
0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x24, 0x0a, 0x0d, 0x4f, 0x6e, 0x43, 0x68,
0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52,
0x0d, 0x4f, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1e,
0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x0a, 0x20, 0x03,
0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14,
0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x52,
0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75,
0x6d, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e,
0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x72, 0x64, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79,
0x70, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79,
0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67,
0x65, 0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67,
0x65, 0x55, 0x52, 0x49, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70,
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20,
0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18,
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x53, 0x6f, 0x72,
0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f, 0x72, 0x74, 0x49,
0x64, 0x12, 0x2c, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x18, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x43,
0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22,
0x0e, 0x0a, 0x0c, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22,
0x3a, 0x0a, 0x0c, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
0x2a, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e,
0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x54, 0x79, 0x70,
0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0xb1, 0x0a, 0x0a, 0x11,
0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x45, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x16,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73,
0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xf8, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x10, 0xf9, 0x07, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x10, 0xfa, 0x07, 0x12,
0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x73, 0x46, 0x75,
0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xfb, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x48, 0x61, 0x64, 0x45, 0x78, 0x69, 0x73, 0x74, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0xfc, 0x07, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0xfe, 0x07, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e,
0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x49, 0x6e,
0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x80, 0x08, 0x12, 0x1d, 0x0a,
0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x4e, 0x6f, 0x74, 0x45, 0x6e,
0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x90, 0x08, 0x12, 0x2c, 0x0a, 0x27,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x57, 0x61, 0x74, 0x63, 0x68,
0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x53, 0x74, 0x61,
0x72, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x92, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x4f, 0x6e, 0x6c, 0x79, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6c, 0x75, 0x62,
0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0x93, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72,
0x52, 0x65, 0x73, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0x94, 0x08, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72,
0x41, 0x70, 0x70, 0x56, 0x65, 0x72, 0x49, 0x73, 0x4c, 0x6f, 0x77, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0x95, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e,
0x65, 0x50, 0x6f, 0x73, 0x46, 0x75, 0x6c, 0x6c, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x98, 0x08,
0x12, 0x23, 0x0a, 0x1e, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x45, 0x6e,
0x74, 0x65, 0x72, 0x46, 0x6f, 0x72, 0x57, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0x9a, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f,
0x6f, 0x6d, 0x48, 0x61, 0x64, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0x9d, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x63, 0x65, 0x6e,
0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0x9e, 0x08, 0x12, 0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x53, 0x61, 0x6d, 0x65, 0x49, 0x70, 0x46, 0x6f, 0x72, 0x62, 0x69, 0x64, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0x9f, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69,
0x6e, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10,
0xa0, 0x08, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54,
0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa2, 0x08, 0x12, 0x1d,
0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x49, 0x6e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x47, 0x61,
0x6d, 0x65, 0x49, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa3, 0x08, 0x12, 0x16, 0x0a,
0x11, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4f, 0x70, 0x59, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0xba, 0x08, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c,
0x6c, 0x6f, 0x63, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x46, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0xc9, 0x08, 0x12, 0x24, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74,
0x4c, 0x69, 0x6d, 0x69, 0x74, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xca, 0x08, 0x12, 0x15, 0x0a,
0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69,
0x74, 0x10, 0xcb, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x61, 0x74,
0x63, 0x68, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x10, 0xcc, 0x08, 0x12, 0x17, 0x0a,
0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x45, 0x72,
0x72, 0x6f, 0x72, 0x10, 0xcd, 0x08, 0x12, 0x17, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43,
0x6f, 0x73, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0xce, 0x08, 0x12,
0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63,
0x65, 0x5f, 0x53, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xb3, 0x08, 0x12, 0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65,
0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x61, 0x78, 0x5f,
0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb4, 0x08, 0x12, 0x26, 0x0a, 0x21, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x4c, 0x6f, 0x77, 0x65, 0x72, 0x52, 0x69, 0x63, 0x65, 0x5f, 0x50, 0x6c,
0x61, 0x79, 0x65, 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xb5, 0x08, 0x12, 0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72,
0x41, 0x72, 0x65, 0x47, 0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c,
0x65, 0x61, 0x76, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f,
0x63, 0x65, 0x73, 0x73, 0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12,
0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65,
0x54, 0x69, 0x6d, 0x65, 0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a,
0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72,
0x6f, 0x6d, 0x6f, 0x74, 0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f,
0x0a, 0x1a, 0x4f, 0x70, 0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62,
0x49, 0x73, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12,
0x1b, 0x0a, 0x16, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73,
0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x44, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xaa, 0x46, 0x12, 0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51,
0x75, 0x6f, 0x74, 0x61, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x10, 0xab, 0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68,
0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65,
0x10, 0xb2, 0x46, 0x2a, 0xc8, 0x09, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c,
0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f,
0x10, 0x00, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a,
0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54,
0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10,
0x9c, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e,
0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10,
0x9f, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47,
0x41, 0x4d, 0x45, 0x10, 0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12,
0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49,
0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa4, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e,
0x46, 0x49, 0x47, 0x10, 0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49,
0x47, 0x10, 0xb8, 0x11, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54,
0x55, 0x53, 0x10, 0xb9, 0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47,
0x45, 0x41, 0x4e, 0x53, 0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52,
0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45,
0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21,
0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50,
0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2,
0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47,
0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53,
0x54, 0x10, 0xe3, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10,
0xe8, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x51, 0x55, 0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41,
0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45,
0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x1a, 0x0a,
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45,
0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53,
0x49, 0x54, 0x10, 0xf6, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d,
0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54,
0x52, 0x59, 0x53, 0x57, 0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43,
0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xfa, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x10, 0xfb,
0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f,
0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0xfc, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x10, 0xfd, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12,
0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41,
0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f,
0x4f, 0x4d, 0x10, 0xc3, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4,
0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46,
0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53,
0x54, 0x41, 0x52, 0x54, 0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45,
0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53,
0x57, 0x49, 0x54, 0x43, 0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65,
0x6e, 0x74, 0x10, 0xc9, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x2a, 0x29,
0x0a, 0x08, 0x44, 0x61, 0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x65,
0x72, 0x6f, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52,
0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e,
0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d,
0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68,
0x61, 0x6c, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x44, 0x6f, 0x77, 0x6e, 0x4d, 0x61, 0x78, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb5, 0x08, 0x12,
0x27, 0x0a, 0x22, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x59, 0x6f, 0x75, 0x72, 0x41, 0x72, 0x65, 0x47,
0x61, 0x6d, 0x69, 0x6e, 0x67, 0x43, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x4c, 0x65, 0x61, 0x76, 0x65,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb6, 0x08, 0x12, 0x21, 0x0a, 0x1c, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x54, 0x68, 0x69, 0x72, 0x64, 0x50, 0x6c, 0x74, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73,
0x69, 0x6e, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xc8, 0x08, 0x12, 0x1c, 0x0a, 0x17, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x52, 0x6f, 0x6f, 0x6d, 0x47, 0x61, 0x6d, 0x65, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xcf, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x4d, 0x75, 0x73, 0x74, 0x42, 0x69, 0x6e, 0x64, 0x50, 0x72, 0x6f, 0x6d, 0x6f, 0x74,
0x65, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xd9, 0x08, 0x12, 0x1f, 0x0a, 0x1a, 0x4f, 0x70,
0x72, 0x63, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x5f, 0x43, 0x6c, 0x75, 0x62, 0x49, 0x73, 0x43, 0x6c,
0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0x9f, 0x27, 0x12, 0x1b, 0x0a, 0x16, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x45, 0x72, 0x72,
0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xa8, 0x46, 0x12, 0x1a, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x44, 0x67, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d,
0x65, 0x10, 0xa9, 0x46, 0x12, 0x19, 0x0a, 0x14, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f,
0x50, 0x6c, 0x61, 0x74, 0x45, 0x72, 0x72, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xaa, 0x46, 0x12,
0x20, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x67, 0x5f, 0x51, 0x75, 0x6f, 0x74, 0x61,
0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xab,
0x46, 0x12, 0x1c, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x54, 0x68, 0x72, 0x5f, 0x47, 0x61,
0x6d, 0x65, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x10, 0xb2, 0x46, 0x2a,
0xc8, 0x09, 0x0a, 0x10, 0x47, 0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x63, 0x6b,
0x65, 0x74, 0x49, 0x44, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x47,
0x61, 0x6d, 0x65, 0x48, 0x61, 0x6c, 0x6c, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x19,
0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41,
0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9a, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f,
0x4d, 0x10, 0x9b, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9c, 0x11, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45,
0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9d, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d,
0x10, 0x9e, 0x11, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x52, 0x45, 0x54, 0x55, 0x52, 0x4e, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0x9f, 0x11, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x45, 0x4e, 0x54, 0x45,
0x52, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa1, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x45, 0x4e, 0x54, 0x45, 0x52, 0x47, 0x41, 0x4d, 0x45, 0x10,
0xa2, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x10, 0xa3, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x47, 0x41, 0x4d,
0x45, 0x10, 0xa4, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10,
0xb7, 0x11, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x47, 0x45, 0x54, 0x47, 0x41, 0x4d, 0x45, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x47, 0x10, 0xb8, 0x11,
0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x48,
0x41, 0x4e, 0x47, 0x45, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0xb9,
0x11, 0x12, 0x23, 0x0a, 0x1e, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x50,
0x4c, 0x41, 0x59, 0x45, 0x52, 0x52, 0x45, 0x43, 0x48, 0x41, 0x52, 0x47, 0x45, 0x41, 0x4e, 0x53,
0x57, 0x45, 0x52, 0x10, 0xd2, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54,
0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe0, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x52, 0x45, 0x41, 0x54, 0x45, 0x50, 0x52, 0x49, 0x56,
0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xe1, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52, 0x49, 0x56, 0x41,
0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe2, 0x11, 0x12, 0x21, 0x0a,
0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x45, 0x54, 0x50, 0x52,
0x49, 0x56, 0x41, 0x54, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x4c, 0x49, 0x53, 0x54, 0x10, 0xe3, 0x11,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x51, 0x55,
0x45, 0x52, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe8, 0x11, 0x12, 0x1c,
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x51, 0x55, 0x45, 0x52,
0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xe9, 0x11, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x53, 0x54,
0x41, 0x54, 0x45, 0x10, 0xed, 0x11, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x45, 0x4e, 0x54,
0x45, 0x52, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xa0, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53,
0x49, 0x54, 0x10, 0xf5, 0x11, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x53, 0x49, 0x54, 0x10, 0xf6,
0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x43,
0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49, 0x43, 0x45, 0x10, 0xf7, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x43, 0x4f, 0x4d, 0x4e, 0x4f, 0x54, 0x49,
0x43, 0x45, 0x10, 0xf8, 0x11, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x43, 0x48, 0x41, 0x4e, 0x47, 0x45, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x53, 0x57,
0x49, 0x54, 0x43, 0x48, 0x10, 0xf9, 0x11, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x63, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x10, 0xfa, 0x11, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x54, 0x6f, 0x75, 0x63, 0x68, 0x54, 0x79, 0x70, 0x65, 0x10, 0xfb, 0x11, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f,
0x6e, 0x66, 0x69, 0x67, 0x10, 0xfc, 0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x10, 0xfd,
0x11, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x4c,
0x45, 0x41, 0x56, 0x45, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc1, 0x3e, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x4f,
0x4f, 0x4d, 0x10, 0xc2, 0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc3,
0x3e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x44,
0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x52, 0x4f, 0x4f, 0x4d, 0x10, 0xc4, 0x3e, 0x12, 0x19, 0x0a,
0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45,
0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0xc5, 0x3e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x53, 0x54, 0x41, 0x52, 0x54,
0x10, 0xc6, 0x3e, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x41, 0x55, 0x44, 0x49, 0x45, 0x4e, 0x43, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52,
0x4f, 0x4f, 0x4d, 0x10, 0xc7, 0x3e, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x53, 0x57, 0x49, 0x54, 0x43,
0x48, 0x46, 0x4c, 0x41, 0x47, 0x10, 0xc8, 0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xc9,
0x3e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f,
0x6f, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xca, 0x3e, 0x2a, 0x29, 0x0a, 0x08, 0x44, 0x61,
0x74, 0x61, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00,
0x12, 0x13, 0x0a, 0x0f, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4c,
0x69, 0x73, 0x74, 0x10, 0x01, 0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67,
0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x68, 0x61, 0x6c, 0x6c, 0x62,
0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (

View File

@ -332,6 +332,7 @@ message PrivateRoomInfo{
int64 CreateTs = 11; //
int32 State = 12; // 0 1 2
repeated PrivatePlayerInfo Players = 13; //
bool IsSystem = 14; //
}
//PACKET_SC_GETPRIVATEROOMLIST

View File

@ -49,6 +49,9 @@ const (
Rank_PACKET_CSRoomAward Rank = 10014
Rank_PACKET_SCRoomAward Rank = 10015
Rank_PACKET_SCRoomAwardOne Rank = 10016 // 竞技馆获奖记录通知
// 竞技馆抽奖历史
Rank_PACKET_CSLotteryHistory Rank = 10017
Rank_PACKET_SCLotteryHistory Rank = 10018
)
// Enum value maps for Rank.
@ -72,6 +75,8 @@ var (
10014: "PACKET_CSRoomAward",
10015: "PACKET_SCRoomAward",
10016: "PACKET_SCRoomAwardOne",
10017: "PACKET_CSLotteryHistory",
10018: "PACKET_SCLotteryHistory",
}
Rank_value = map[string]int32{
"PACKET_RANK_ZERO": 0,
@ -92,6 +97,8 @@ var (
"PACKET_CSRoomAward": 10014,
"PACKET_SCRoomAward": 10015,
"PACKET_SCRoomAwardOne": 10016,
"PACKET_CSLotteryHistory": 10017,
"PACKET_SCLotteryHistory": 10018,
}
)
@ -1916,10 +1923,12 @@ type UserAward struct {
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"` // 玩家id
Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 昵称
Awards []*Item `protobuf:"bytes,3,rep,name=Awards,proto3" json:"Awards,omitempty"` // 奖品
Ts int64 `protobuf:"varint,4,opt,name=Ts,proto3" json:"Ts,omitempty"` // 获得时间
Snid int32 `protobuf:"varint,1,opt,name=Snid,proto3" json:"Snid,omitempty"` // 玩家id
Name string `protobuf:"bytes,2,opt,name=Name,proto3" json:"Name,omitempty"` // 昵称
Awards []*Item `protobuf:"bytes,3,rep,name=Awards,proto3" json:"Awards,omitempty"` // 奖品
Ts int64 `protobuf:"varint,4,opt,name=Ts,proto3" json:"Ts,omitempty"` // 获得时间
Price int64 `protobuf:"varint,5,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值
ImageURL string `protobuf:"bytes,6,opt,name=ImageURL,proto3" json:"ImageURL,omitempty"` // 奖品图片
}
func (x *UserAward) Reset() {
@ -1982,6 +1991,20 @@ func (x *UserAward) GetTs() int64 {
return 0
}
func (x *UserAward) GetPrice() int64 {
if x != nil {
return x.Price
}
return 0
}
func (x *UserAward) GetImageURL() string {
if x != nil {
return x.ImageURL
}
return ""
}
//PACKET_SCRoomAward
type SCRoomAward struct {
state protoimpl.MessageState
@ -2054,6 +2077,244 @@ func (x *SCRoomAward) GetTotal() int32 {
return 0
}
// 竞技馆抽奖历史
// PACKET_CSLotteryHistory
type CSLotteryHistory struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *CSLotteryHistory) Reset() {
*x = CSLotteryHistory{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[26]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CSLotteryHistory) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CSLotteryHistory) ProtoMessage() {}
func (x *CSLotteryHistory) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[26]
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 CSLotteryHistory.ProtoReflect.Descriptor instead.
func (*CSLotteryHistory) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{26}
}
type LotteryShow struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 资源类型
Url string `protobuf:"bytes,2,opt,name=Url,proto3" json:"Url,omitempty"` // 资源地址
ImgUrl string `protobuf:"bytes,3,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` // 缩略图地址
}
func (x *LotteryShow) Reset() {
*x = LotteryShow{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[27]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LotteryShow) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LotteryShow) ProtoMessage() {}
func (x *LotteryShow) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[27]
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 LotteryShow.ProtoReflect.Descriptor instead.
func (*LotteryShow) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{27}
}
func (x *LotteryShow) GetTp() int32 {
if x != nil {
return x.Tp
}
return 0
}
func (x *LotteryShow) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *LotteryShow) GetImgUrl() string {
if x != nil {
return x.ImgUrl
}
return ""
}
type LotteryHistory struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳
Index int32 `protobuf:"varint,2,opt,name=Index,proto3" json:"Index,omitempty"` // 期数
SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家id
Name string `protobuf:"bytes,4,opt,name=Name,proto3" json:"Name,omitempty"` // 玩家名字
Award []*Item `protobuf:"bytes,5,rep,name=Award,proto3" json:"Award,omitempty"` // 本期奖品
Show []*LotteryShow `protobuf:"bytes,6,rep,name=Show,proto3" json:"Show,omitempty"` // 展示列表
}
func (x *LotteryHistory) Reset() {
*x = LotteryHistory{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[28]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LotteryHistory) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LotteryHistory) ProtoMessage() {}
func (x *LotteryHistory) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[28]
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 LotteryHistory.ProtoReflect.Descriptor instead.
func (*LotteryHistory) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{28}
}
func (x *LotteryHistory) GetTs() int64 {
if x != nil {
return x.Ts
}
return 0
}
func (x *LotteryHistory) GetIndex() int32 {
if x != nil {
return x.Index
}
return 0
}
func (x *LotteryHistory) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *LotteryHistory) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *LotteryHistory) GetAward() []*Item {
if x != nil {
return x.Award
}
return nil
}
func (x *LotteryHistory) GetShow() []*LotteryShow {
if x != nil {
return x.Show
}
return nil
}
// PACKET_SCLotteryHistory
type SCLotteryHistory struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
List []*LotteryHistory `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"`
}
func (x *SCLotteryHistory) Reset() {
*x = SCLotteryHistory{}
if protoimpl.UnsafeEnabled {
mi := &file_rank_proto_msgTypes[29]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCLotteryHistory) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCLotteryHistory) ProtoMessage() {}
func (x *SCLotteryHistory) ProtoReflect() protoreflect.Message {
mi := &file_rank_proto_msgTypes[29]
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 SCLotteryHistory.ProtoReflect.Descriptor instead.
func (*SCLotteryHistory) Descriptor() ([]byte, []int) {
return file_rank_proto_rawDescGZIP(), []int{29}
}
func (x *SCLotteryHistory) GetList() []*LotteryHistory {
if x != nil {
return x.List
}
return nil
}
var File_rank_proto protoreflect.FileDescriptor
var file_rank_proto_rawDesc = []byte{
@ -2225,63 +2486,90 @@ var file_rank_proto_rawDesc = []byte{
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x22, 0x24, 0x0a, 0x04,
0x49, 0x74, 0x65, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x49, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x4e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
0x01, 0x4e, 0x22, 0x67, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12,
0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53,
0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64,
0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x49,
0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x54,
0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x22, 0x72, 0x0a, 0x0b, 0x53,
0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a, 0x04, 0x4c, 0x69,
0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e,
0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12,
0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53,
0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01,
0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x54, 0x6f, 0x74,
0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x2a,
0xe2, 0x03, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c,
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53,
0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61,
0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e,
0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41,
0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e,
0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10,
0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f,
0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52,
0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e,
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f,
0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65,
0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e,
0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f,
0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72,
0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12,
0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d,
0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9f, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e,
0x65, 0x10, 0xa0, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x10, 0x01, 0x12, 0x13,
0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x57, 0x65, 0x65,
0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70,
0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x04,
0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d,
0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61,
0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
0x6f, 0x33,
0x01, 0x4e, 0x22, 0x99, 0x01, 0x0a, 0x09, 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64,
0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04,
0x53, 0x6e, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x06, 0x41, 0x77, 0x61, 0x72,
0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e,
0x49, 0x74, 0x65, 0x6d, 0x52, 0x06, 0x41, 0x77, 0x61, 0x72, 0x64, 0x73, 0x12, 0x0e, 0x0a, 0x02,
0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05,
0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69,
0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x06,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x22, 0x72,
0x0a, 0x0b, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x23, 0x0a,
0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x72, 0x61,
0x6e, 0x6b, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x41, 0x77, 0x61, 0x72, 0x64, 0x52, 0x04, 0x4c, 0x69,
0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x04, 0x53, 0x6b, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x18,
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05,
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74,
0x61, 0x6c, 0x22, 0x12, 0x0a, 0x10, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48,
0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x47, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
0x79, 0x53, 0x68, 0x6f, 0x77, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72,
0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x22,
0xa7, 0x01, 0x0a, 0x0e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f,
0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02,
0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64,
0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04,
0x4e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65,
0x12, 0x20, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32,
0x0a, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x41, 0x77, 0x61,
0x72, 0x64, 0x12, 0x25, 0x0a, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b,
0x32, 0x11, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x53,
0x68, 0x6f, 0x77, 0x52, 0x04, 0x53, 0x68, 0x6f, 0x77, 0x22, 0x3c, 0x0a, 0x10, 0x53, 0x43, 0x4c,
0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x28, 0x0a,
0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x61,
0x6e, 0x6b, 0x2e, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72,
0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x9e, 0x04, 0x0a, 0x04, 0x52, 0x61, 0x6e, 0x6b,
0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f,
0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63,
0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52,
0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10,
0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e,
0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f, 0x69,
0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52,
0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94, 0x4e, 0x12,
0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53,
0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67,
0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a, 0x0a, 0x15,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x57, 0x69,
0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69,
0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52,
0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e, 0x12, 0x18,
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43,
0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74,
0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41,
0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e, 0x12, 0x17,
0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f, 0x6d, 0x41,
0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9f, 0x4e,
0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f,
0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, 0x1c, 0x0a, 0x17,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69,
0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52, 0x61, 0x6e,
0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10,
0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74, 0x61, 0x6c,
0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65,
0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12, 0x15, 0x0a,
0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70, 0x57, 0x65,
0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79,
0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f, 0x6e, 0x67,
0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65,
0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, 0x6b, 0x62, 0x06,
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -2297,7 +2585,7 @@ func file_rank_proto_rawDescGZIP() []byte {
}
var file_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 26)
var file_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
var file_rank_proto_goTypes = []interface{}{
(Rank)(0), // 0: rank.Rank
(RankInvite)(0), // 1: rank.RankInvite
@ -2327,6 +2615,10 @@ var file_rank_proto_goTypes = []interface{}{
(*Item)(nil), // 25: rank.Item
(*UserAward)(nil), // 26: rank.UserAward
(*SCRoomAward)(nil), // 27: rank.SCRoomAward
(*CSLotteryHistory)(nil), // 28: rank.CSLotteryHistory
(*LotteryShow)(nil), // 29: rank.LotteryShow
(*LotteryHistory)(nil), // 30: rank.LotteryHistory
(*SCLotteryHistory)(nil), // 31: rank.SCLotteryHistory
}
var file_rank_proto_depIdxs = []int32{
3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank
@ -2344,11 +2636,14 @@ var file_rank_proto_depIdxs = []int32{
22, // 12: rank.SCPermit.Me:type_name -> rank.PermitRank
25, // 13: rank.UserAward.Awards:type_name -> rank.Item
26, // 14: rank.SCRoomAward.List:type_name -> rank.UserAward
15, // [15:15] is the sub-list for method output_type
15, // [15:15] is the sub-list for method input_type
15, // [15:15] is the sub-list for extension type_name
15, // [15:15] is the sub-list for extension extendee
0, // [0:15] is the sub-list for field type_name
25, // 15: rank.LotteryHistory.Award:type_name -> rank.Item
29, // 16: rank.LotteryHistory.Show:type_name -> rank.LotteryShow
30, // 17: rank.SCLotteryHistory.List:type_name -> rank.LotteryHistory
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_rank_proto_init() }
@ -2669,6 +2964,54 @@ func file_rank_proto_init() {
return nil
}
}
file_rank_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CSLotteryHistory); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_rank_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LotteryShow); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_rank_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LotteryHistory); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_rank_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCLotteryHistory); 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{
@ -2676,7 +3019,7 @@ func file_rank_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_rank_proto_rawDesc,
NumEnums: 2,
NumMessages: 26,
NumMessages: 30,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -29,6 +29,10 @@ enum Rank{
PACKET_CSRoomAward = 10014;
PACKET_SCRoomAward = 10015;
PACKET_SCRoomAwardOne = 10016; //
//
PACKET_CSLotteryHistory = 10017;
PACKET_SCLotteryHistory = 10018;
}
//
@ -230,6 +234,8 @@ message UserAward{
string Name = 2; //
repeated Item Awards = 3; //
int64 Ts = 4; //
int64 Price = 5; //
string ImageURL = 6; //
}
//PACKET_SCRoomAward
@ -238,4 +244,28 @@ message SCRoomAward{
int32 Skip = 2; //
int32 Limit = 3; //
int32 Total = 4; //
}
//
// PACKET_CSLotteryHistory
message CSLotteryHistory{}
message LotteryShow {
int32 Tp = 1; //
string Url = 2; //
string ImgUrl = 3; //
}
message LotteryHistory{
int64 Ts = 1; //
int32 Index = 2; //
int32 SnId = 3; // id
string Name = 4; //
repeated Item Award = 5; //
repeated LotteryShow Show = 6; //
}
// PACKET_SCLotteryHistory
message SCLotteryHistory{
repeated LotteryHistory List = 1;
}

File diff suppressed because it is too large Load Diff

View File

@ -173,6 +173,8 @@ message CustomParam {
int32 CostType = 3; // 1AA 2
string Password = 4; //
int32 Voice = 5; // 1 2
int64 Price = 6; //
string ImageURL = 7; //
}
message MatchParam {

View File

@ -8671,6 +8671,7 @@ type RoomConfig struct {
CostType int32 `protobuf:"varint,14,opt,name=CostType,proto3" json:"CostType,omitempty"` // 消耗类型 1AA 2房主 3自定义
Voice int32 `protobuf:"varint,15,opt,name=Voice,proto3" json:"Voice,omitempty"` // 是否开启语音 1是 2否 3自定义
ImageURI string `protobuf:"bytes,16,opt,name=ImageURI,proto3" json:"ImageURI,omitempty"` // 奖励图片
Price int64 `protobuf:"varint,17,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值
}
func (x *RoomConfig) Reset() {
@ -8817,6 +8818,13 @@ func (x *RoomConfig) GetImageURI() string {
return ""
}
func (x *RoomConfig) GetPrice() int64 {
if x != nil {
return x.Price
}
return 0
}
// etcd /game/room_config_system
type RoomConfigSystem struct {
state protoimpl.MessageState
@ -9176,6 +9184,389 @@ func (x *PopUpWindowInfo) GetWeight() int32 {
return 0
}
// etcd /game/lottery 抽奖活动配置
type LotteryConfig struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台
On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 1开启 2关闭
Cycle int32 `protobuf:"varint,3,opt,name=Cycle,proto3" json:"Cycle,omitempty"` // 循环开关 1开启 2关闭
List []*LotteryInfo `protobuf:"bytes,4,rep,name=List,proto3" json:"List,omitempty"` // 活动列表
}
func (x *LotteryConfig) Reset() {
*x = LotteryConfig{}
if protoimpl.UnsafeEnabled {
mi := &file_common_proto_msgTypes[96]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LotteryConfig) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LotteryConfig) ProtoMessage() {}
func (x *LotteryConfig) ProtoReflect() protoreflect.Message {
mi := &file_common_proto_msgTypes[96]
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 LotteryConfig.ProtoReflect.Descriptor instead.
func (*LotteryConfig) Descriptor() ([]byte, []int) {
return file_common_proto_rawDescGZIP(), []int{96}
}
func (x *LotteryConfig) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
func (x *LotteryConfig) GetOn() int32 {
if x != nil {
return x.On
}
return 0
}
func (x *LotteryConfig) GetCycle() int32 {
if x != nil {
return x.Cycle
}
return 0
}
func (x *LotteryConfig) GetList() []*LotteryInfo {
if x != nil {
return x.List
}
return nil
}
type LotteryInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id
StartHMS int64 `protobuf:"varint,2,opt,name=StartHMS,proto3" json:"StartHMS,omitempty"` // 开始时间,时*10000 + 分*100 + 秒
EndHMS int64 `protobuf:"varint,3,opt,name=EndHMS,proto3" json:"EndHMS,omitempty"` // 结束时间,时*10000 + 分*100 + 秒
WinHMS int64 `protobuf:"varint,4,opt,name=WinHMS,proto3" json:"WinHMS,omitempty"` // 开奖时间,时*10000 + 分*100 + 秒
Reward []*ItemInfo `protobuf:"bytes,5,rep,name=Reward,proto3" json:"Reward,omitempty"` // 奖励
Price int64 `protobuf:"varint,6,opt,name=Price,proto3" json:"Price,omitempty"` // 价值,美分
TotalCode int64 `protobuf:"varint,7,opt,name=TotalCode,proto3" json:"TotalCode,omitempty"` // 总开奖码数
RobotCode int64 `protobuf:"varint,8,opt,name=RobotCode,proto3" json:"RobotCode,omitempty"` // 机器人开奖码数
On int32 `protobuf:"varint,9,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭
ImageURI string `protobuf:"bytes,10,opt,name=ImageURI,proto3" json:"ImageURI,omitempty"` // 图片地址
}
func (x *LotteryInfo) Reset() {
*x = LotteryInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_common_proto_msgTypes[97]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LotteryInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LotteryInfo) ProtoMessage() {}
func (x *LotteryInfo) ProtoReflect() protoreflect.Message {
mi := &file_common_proto_msgTypes[97]
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 LotteryInfo.ProtoReflect.Descriptor instead.
func (*LotteryInfo) Descriptor() ([]byte, []int) {
return file_common_proto_rawDescGZIP(), []int{97}
}
func (x *LotteryInfo) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *LotteryInfo) GetStartHMS() int64 {
if x != nil {
return x.StartHMS
}
return 0
}
func (x *LotteryInfo) GetEndHMS() int64 {
if x != nil {
return x.EndHMS
}
return 0
}
func (x *LotteryInfo) GetWinHMS() int64 {
if x != nil {
return x.WinHMS
}
return 0
}
func (x *LotteryInfo) GetReward() []*ItemInfo {
if x != nil {
return x.Reward
}
return nil
}
func (x *LotteryInfo) GetPrice() int64 {
if x != nil {
return x.Price
}
return 0
}
func (x *LotteryInfo) GetTotalCode() int64 {
if x != nil {
return x.TotalCode
}
return 0
}
func (x *LotteryInfo) GetRobotCode() int64 {
if x != nil {
return x.RobotCode
}
return 0
}
func (x *LotteryInfo) GetOn() int32 {
if x != nil {
return x.On
}
return 0
}
func (x *LotteryInfo) GetImageURI() string {
if x != nil {
return x.ImageURI
}
return ""
}
// etcd /game/user_lottery 必中抽奖配置
type UserLottery struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台
Id int64 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id
SnId int32 `protobuf:"varint,3,opt,name=SnId,proto3" json:"SnId,omitempty"` // 玩家ID
Time int64 `protobuf:"varint,4,opt,name=Time,proto3" json:"Time,omitempty"` // 抽奖时间
Num int64 `protobuf:"varint,5,opt,name=Num,proto3" json:"Num,omitempty"` // 第几期
On int32 `protobuf:"varint,6,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭
}
func (x *UserLottery) Reset() {
*x = UserLottery{}
if protoimpl.UnsafeEnabled {
mi := &file_common_proto_msgTypes[98]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *UserLottery) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*UserLottery) ProtoMessage() {}
func (x *UserLottery) ProtoReflect() protoreflect.Message {
mi := &file_common_proto_msgTypes[98]
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 UserLottery.ProtoReflect.Descriptor instead.
func (*UserLottery) Descriptor() ([]byte, []int) {
return file_common_proto_rawDescGZIP(), []int{98}
}
func (x *UserLottery) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
func (x *UserLottery) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *UserLottery) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *UserLottery) GetTime() int64 {
if x != nil {
return x.Time
}
return 0
}
func (x *UserLottery) GetNum() int64 {
if x != nil {
return x.Num
}
return 0
}
func (x *UserLottery) GetOn() int32 {
if x != nil {
return x.On
}
return 0
}
// etcd /game/show_lottery 抽奖展示配置
type ShowLottery struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Platform string `protobuf:"bytes,1,opt,name=Platform,proto3" json:"Platform,omitempty"` // 平台
Id int64 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 配置id
On int32 `protobuf:"varint,3,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭
Time int64 `protobuf:"varint,4,opt,name=Time,proto3" json:"Time,omitempty"` // 抽奖时间
Num int64 `protobuf:"varint,5,opt,name=Num,proto3" json:"Num,omitempty"` // 第几期
Tp int32 `protobuf:"varint,6,opt,name=Tp,proto3" json:"Tp,omitempty"` // 资源类型 1图片 2视频
Url string `protobuf:"bytes,7,opt,name=Url,proto3" json:"Url,omitempty"` // 资源地址
ImgUrl string `protobuf:"bytes,8,opt,name=ImgUrl,proto3" json:"ImgUrl,omitempty"` // 视频缩略图地址
}
func (x *ShowLottery) Reset() {
*x = ShowLottery{}
if protoimpl.UnsafeEnabled {
mi := &file_common_proto_msgTypes[99]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *ShowLottery) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*ShowLottery) ProtoMessage() {}
func (x *ShowLottery) ProtoReflect() protoreflect.Message {
mi := &file_common_proto_msgTypes[99]
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 ShowLottery.ProtoReflect.Descriptor instead.
func (*ShowLottery) Descriptor() ([]byte, []int) {
return file_common_proto_rawDescGZIP(), []int{99}
}
func (x *ShowLottery) GetPlatform() string {
if x != nil {
return x.Platform
}
return ""
}
func (x *ShowLottery) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *ShowLottery) GetOn() int32 {
if x != nil {
return x.On
}
return 0
}
func (x *ShowLottery) GetTime() int64 {
if x != nil {
return x.Time
}
return 0
}
func (x *ShowLottery) GetNum() int64 {
if x != nil {
return x.Num
}
return 0
}
func (x *ShowLottery) GetTp() int32 {
if x != nil {
return x.Tp
}
return 0
}
func (x *ShowLottery) GetUrl() string {
if x != nil {
return x.Url
}
return ""
}
func (x *ShowLottery) GetImgUrl() string {
if x != nil {
return x.ImgUrl
}
return ""
}
var File_common_proto protoreflect.FileDescriptor
var file_common_proto_rawDesc = []byte{
@ -10532,7 +10923,7 @@ var file_common_proto_rawDesc = []byte{
0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02,
0x4f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x16, 0x0a, 0x06,
0x53, 0x6f, 0x72, 0x74, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x53, 0x6f,
0x72, 0x74, 0x49, 0x64, 0x22, 0xcc, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e,
0x72, 0x74, 0x49, 0x64, 0x22, 0xe2, 0x03, 0x0a, 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12,
0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12,
@ -10561,57 +10952,103 @@ var file_common_proto_rawDesc = []byte{
0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05,
0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x55, 0x52, 0x49, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65,
0x55, 0x52, 0x49, 0x22, 0x96, 0x03, 0x0a, 0x10, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x55, 0x52, 0x49, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x11, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x22, 0x96, 0x03, 0x0a, 0x10, 0x52, 0x6f,
0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x12, 0x1a,
0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64,
0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f,
0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1e,
0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0a, 0x47, 0x61, 0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14,
0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52,
0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75,
0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e,
0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f,
0x72, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61,
0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79,
0x70, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79,
0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74,
0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a,
0x0a, 0x08, 0x46, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05,
0x52, 0x08, 0x46, 0x75, 0x6c, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x75,
0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75,
0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69,
0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02,
0x4f, 0x6e, 0x22, 0x7f, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72,
0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12,
0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12,
0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x07, 0x4f, 0x6e, 0x46, 0x6f, 0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77,
0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61,
0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77,
0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a, 0x11, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64,
0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x52, 0x6f, 0x6f, 0x6d,
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x47, 0x61, 0x6d, 0x65,
0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x47, 0x61,
0x6d, 0x65, 0x46, 0x72, 0x65, 0x65, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x52, 0x6f, 0x75, 0x6e,
0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x1c,
0x0a, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28,
0x05, 0x52, 0x09, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c,
0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x07, 0x20, 0x01,
0x28, 0x05, 0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64,
0x12, 0x1a, 0x0a, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x18, 0x08, 0x20, 0x01,
0x28, 0x05, 0x52, 0x08, 0x43, 0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05,
0x56, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69,
0x63, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28,
0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x46, 0x75, 0x6c, 0x6c,
0x54, 0x69, 0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x46, 0x75, 0x6c, 0x6c,
0x54, 0x69, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72,
0x65, 0x61, 0x74, 0x65, 0x12, 0x26, 0x0a, 0x0e, 0x41, 0x75, 0x74, 0x6f, 0x43, 0x72, 0x65, 0x61,
0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x41, 0x75,
0x74, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x0e, 0x0a, 0x02,
0x4f, 0x6e, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x7f, 0x0a, 0x0d,
0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x12, 0x1a, 0x0a,
0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52,
0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18,
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x6e, 0x46,
0x6f, 0x72, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4f, 0x6e, 0x46, 0x6f,
0x72, 0x63, 0x65, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65,
0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x22, 0x5c, 0x0a,
0x11, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6f, 0x6e, 0x66,
0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2b,
0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77,
0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f,
0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0x7f, 0x0a, 0x0f, 0x50,
0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61,
0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
0x03, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74,
0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74,
0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x05,
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x42, 0x26, 0x5a, 0x24,
0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65,
0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
0x66, 0x6f, 0x72, 0x6d, 0x12, 0x2b, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x02, 0x20, 0x03,
0x28, 0x0b, 0x32, 0x17, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x6f, 0x70, 0x55,
0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66,
0x6f, 0x22, 0x7f, 0x0a, 0x0f, 0x50, 0x6f, 0x70, 0x55, 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77,
0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01,
0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4b, 0x65, 0x79, 0x18,
0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4b, 0x65, 0x79, 0x12, 0x1e, 0x0a, 0x0a, 0x4f, 0x70,
0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
0x4f, 0x70, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65,
0x69, 0x67, 0x68, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67,
0x68, 0x74, 0x22, 0x7a, 0x0a, 0x0d, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x43, 0x6f, 0x6e,
0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18,
0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12,
0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12,
0x14, 0x0a, 0x05, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
0x43, 0x79, 0x63, 0x6c, 0x65, 0x12, 0x27, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x04, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x4c, 0x6f, 0x74,
0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x91,
0x02, 0x0a, 0x0b, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x1a,
0x0a, 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x08, 0x53, 0x74, 0x61, 0x72, 0x74, 0x48, 0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x45, 0x6e,
0x64, 0x48, 0x4d, 0x53, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x45, 0x6e, 0x64, 0x48,
0x4d, 0x53, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69, 0x6e, 0x48, 0x4d, 0x53, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x48, 0x4d, 0x53, 0x12, 0x28, 0x0a, 0x06, 0x52, 0x65,
0x77, 0x61, 0x72, 0x64, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62,
0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x52, 0x65,
0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x06, 0x20,
0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x54, 0x6f,
0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x54,
0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x52, 0x6f, 0x62, 0x6f,
0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x6f, 0x62,
0x6f, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x09, 0x20, 0x01,
0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55,
0x52, 0x49, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55,
0x52, 0x49, 0x22, 0x83, 0x01, 0x0a, 0x0b, 0x55, 0x73, 0x65, 0x72, 0x4c, 0x6f, 0x74, 0x74, 0x65,
0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01,
0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e,
0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x12,
0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03,
0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x05, 0x20,
0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x06,
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x53, 0x68, 0x6f,
0x77, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c, 0x61, 0x74,
0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03,
0x52, 0x02, 0x49, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05,
0x52, 0x02, 0x4f, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01,
0x28, 0x03, 0x52, 0x04, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18,
0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70,
0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x72,
0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x72, 0x6c, 0x12, 0x16, 0x0a, 0x06,
0x49, 0x6d, 0x67, 0x55, 0x72, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x49, 0x6d,
0x67, 0x55, 0x72, 0x6c, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61,
0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f,
0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72,
0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -10626,7 +11063,7 @@ func file_common_proto_rawDescGZIP() []byte {
return file_common_proto_rawDescData
}
var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 106)
var file_common_proto_msgTypes = make([]protoimpl.MessageInfo, 110)
var file_common_proto_goTypes = []interface{}{
(*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting
(*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting
@ -10724,32 +11161,36 @@ var file_common_proto_goTypes = []interface{}{
(*ClientUpgrade)(nil), // 93: webapi.ClientUpgrade
(*PopUpWindowConfig)(nil), // 94: webapi.PopUpWindowConfig
(*PopUpWindowInfo)(nil), // 95: webapi.PopUpWindowInfo
nil, // 96: webapi.Platform.BindTelRewardEntry
nil, // 97: webapi.PlayerData.RankScoreEntry
nil, // 98: webapi.ItemShop.AwardEntry
nil, // 99: webapi.VIPcfg.AwardEntry
nil, // 100: webapi.VIPcfg.Privilege1Entry
nil, // 101: webapi.VIPcfg.Privilege7Entry
nil, // 102: webapi.VIPcfg.Privilege9Entry
nil, // 103: webapi.ActInviteConfig.PayScoreEntry
nil, // 104: webapi.SkinLevel.UpItemEntry
nil, // 105: webapi.SkinItem.UnlockParamEntry
(*server.DB_GameFree)(nil), // 106: server.DB_GameFree
(*server.DB_GameItem)(nil), // 107: server.DB_GameItem
(*LotteryConfig)(nil), // 96: webapi.LotteryConfig
(*LotteryInfo)(nil), // 97: webapi.LotteryInfo
(*UserLottery)(nil), // 98: webapi.UserLottery
(*ShowLottery)(nil), // 99: webapi.ShowLottery
nil, // 100: webapi.Platform.BindTelRewardEntry
nil, // 101: webapi.PlayerData.RankScoreEntry
nil, // 102: webapi.ItemShop.AwardEntry
nil, // 103: webapi.VIPcfg.AwardEntry
nil, // 104: webapi.VIPcfg.Privilege1Entry
nil, // 105: webapi.VIPcfg.Privilege7Entry
nil, // 106: webapi.VIPcfg.Privilege9Entry
nil, // 107: webapi.ActInviteConfig.PayScoreEntry
nil, // 108: webapi.SkinLevel.UpItemEntry
nil, // 109: webapi.SkinItem.UnlockParamEntry
(*server.DB_GameFree)(nil), // 110: server.DB_GameFree
(*server.DB_GameItem)(nil), // 111: server.DB_GameItem
}
var file_common_proto_depIdxs = []int32{
2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch
3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig
4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame
96, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry
100, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry
6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus
106, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree
110, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree
8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree
0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting
1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting
1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting
106, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree
97, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry
110, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree
101, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry
32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo
14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo
14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo
@ -10762,7 +11203,7 @@ var file_common_proto_depIdxs = []int32{
32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo
25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop
29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight
98, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry
102, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry
30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop
32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo
33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward
@ -10783,14 +11224,14 @@ var file_common_proto_depIdxs = []int32{
38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate
48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree
48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree
99, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry
100, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry
101, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry
102, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry
103, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry
104, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry
105, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry
106, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry
51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg
38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate
55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig
103, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry
107, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry
62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward
62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward
62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward
@ -10807,12 +11248,12 @@ var file_common_proto_depIdxs = []int32{
69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo
70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers
72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData
107, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem
111, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem
32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo
75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo
76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo
104, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry
105, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry
108, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry
109, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry
78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel
79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem
82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData
@ -10823,11 +11264,13 @@ var file_common_proto_depIdxs = []int32{
32, // 82: webapi.RoomConfig.Reward:type_name -> webapi.ItemInfo
32, // 83: webapi.ClientUpgrade.Reward:type_name -> webapi.ItemInfo
95, // 84: webapi.PopUpWindowConfig.Info:type_name -> webapi.PopUpWindowInfo
85, // [85:85] is the sub-list for method output_type
85, // [85:85] is the sub-list for method input_type
85, // [85:85] is the sub-list for extension type_name
85, // [85:85] is the sub-list for extension extendee
0, // [0:85] is the sub-list for field type_name
97, // 85: webapi.LotteryConfig.List:type_name -> webapi.LotteryInfo
32, // 86: webapi.LotteryInfo.Reward:type_name -> webapi.ItemInfo
87, // [87:87] is the sub-list for method output_type
87, // [87:87] is the sub-list for method input_type
87, // [87:87] is the sub-list for extension type_name
87, // [87:87] is the sub-list for extension extendee
0, // [0:87] is the sub-list for field type_name
}
func init() { file_common_proto_init() }
@ -11988,6 +12431,54 @@ func file_common_proto_init() {
return nil
}
}
file_common_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LotteryConfig); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LotteryInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*UserLottery); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_common_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*ShowLottery); 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{
@ -11995,7 +12486,7 @@ func file_common_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_common_proto_rawDesc,
NumEnums: 0,
NumMessages: 106,
NumMessages: 110,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -923,8 +923,8 @@ message MachineInfo{
string Name = 9;//
double BuyPrice = 10; //
double CatchPrice = 11; //
double ProfitMin = 12; //
double ProfitMax = 13; //
double ProfitMin = 12; //
double ProfitMax = 13; //
}
// etcd /game/match_audience
message MatchAudience {
@ -967,6 +967,7 @@ message RoomConfig {
int32 CostType = 14; // 1AA 2 3
int32 Voice = 15; // 1 2 3
string ImageURI = 16; //
int64 Price = 17; //
}
// etcd /game/room_config_system
@ -1006,4 +1007,47 @@ message PopUpWindowInfo{
string Key = 3;
int32 OpenStatus = 4;//1- 2-
int32 Weight = 5;//
}
// etcd /game/lottery
message LotteryConfig{
string Platform = 1; //
int32 On = 2; // 1 2
int32 Cycle = 3; // 1 2
repeated LotteryInfo List = 4; //
}
message LotteryInfo{
int64 Id = 1; // id
int64 StartHMS = 2; // ,*10000 + *100 +
int64 EndHMS = 3; // ,*10000 + *100 +
int64 WinHMS = 4; // ,*10000 + *100 +
repeated ItemInfo Reward = 5; //
int64 Price = 6; //
int64 TotalCode = 7; //
int64 RobotCode = 8; //
int32 On = 9; // 1 2
string ImageURI = 10; //
}
// etcd /game/user_lottery
message UserLottery{
string Platform = 1; //
int64 Id = 2; // id
int32 SnId = 3; // ID
int64 Time = 4; //
int64 Num = 5; //
int32 On = 6; // 1 2
}
// etcd /game/show_lottery
message ShowLottery{
string Platform = 1; //
int64 Id = 2; // id
int32 On = 3; // 1 2
int64 Time = 4; //
int64 Num = 5; //
int32 Tp = 6; // 1 2
string Url = 7; //
string ImgUrl = 8; //
}

View File

@ -1003,4 +1003,4 @@ message ASGetDollExchangeOrder{
message SAGetDollExchangeOrder {
TagCode Tag = 1;//
repeated ExchangeOrderInfo OrderList = 2;//
}
}

View File

@ -164,6 +164,9 @@ const (
SPacketID_PACKET_SCPermitExchange SPacketID = 2924 // 通行证兑换
SPacketID_PACKET_CSPermitShop SPacketID = 2925 // 典藏通行证商品信息
SPacketID_PACKET_SCPermitShop SPacketID = 2956 // 典藏通行证商品信息
SPacketID_PACKET_CSLotteryInfo SPacketID = 2926 // 抽奖信息
SPacketID_PACKET_SCLotteryInfo SPacketID = 2927 // 抽奖信息
SPacketID_PACKET_NotifyLotteryAward SPacketID = 2928 // 通知抽奖中奖
)
// Enum value maps for SPacketID.
@ -215,6 +218,9 @@ var (
2924: "PACKET_SCPermitExchange",
2925: "PACKET_CSPermitShop",
2956: "PACKET_SCPermitShop",
2926: "PACKET_CSLotteryInfo",
2927: "PACKET_SCLotteryInfo",
2928: "PACKET_NotifyLotteryAward",
}
SPacketID_value = map[string]int32{
"PACKET_SHOP_ZERO": 0,
@ -263,6 +269,9 @@ var (
"PACKET_SCPermitExchange": 2924,
"PACKET_CSPermitShop": 2925,
"PACKET_SCPermitShop": 2956,
"PACKET_CSLotteryInfo": 2926,
"PACKET_SCLotteryInfo": 2927,
"PACKET_NotifyLotteryAward": 2928,
}
)
@ -4110,6 +4119,319 @@ func (x *SCPermitShop) GetPrice() int64 {
return 0
}
// 抽奖信息
//PACKET_CSLotteryInfo
type CSLotteryInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
}
func (x *CSLotteryInfo) Reset() {
*x = CSLotteryInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[60]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *CSLotteryInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*CSLotteryInfo) ProtoMessage() {}
func (x *CSLotteryInfo) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[60]
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 CSLotteryInfo.ProtoReflect.Descriptor instead.
func (*CSLotteryInfo) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{60}
}
type LotteryInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 抽奖id
StartTs int64 `protobuf:"varint,2,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始时间
EndTs int64 `protobuf:"varint,3,opt,name=EndTs,proto3" json:"EndTs,omitempty"` // 结束时间
WinTs int64 `protobuf:"varint,4,opt,name=WinTs,proto3" json:"WinTs,omitempty"` // 开奖时间
RemainCode int64 `protobuf:"varint,5,opt,name=RemainCode,proto3" json:"RemainCode,omitempty"` // 剩余号码
TotalCode int64 `protobuf:"varint,6,opt,name=TotalCode,proto3" json:"TotalCode,omitempty"` // 总号码
Award []*PropInfo `protobuf:"bytes,7,rep,name=Award,proto3" json:"Award,omitempty"` // 本期奖品
State int32 `protobuf:"varint,8,opt,name=State,proto3" json:"State,omitempty"` // 状态 1已结束 2进行中中 3未开始
WinCode string `protobuf:"bytes,9,opt,name=WinCode,proto3" json:"WinCode,omitempty"` // 开奖号码
SnId int32 `protobuf:"varint,10,opt,name=SnId,proto3" json:"SnId,omitempty"` // 中奖玩家id
Name string `protobuf:"bytes,11,opt,name=Name,proto3" json:"Name,omitempty"` // 中奖玩家名字
Index int32 `protobuf:"varint,12,opt,name=Index,proto3" json:"Index,omitempty"` // 期数
Price int64 `protobuf:"varint,13,opt,name=Price,proto3" json:"Price,omitempty"` // 奖品价值,美分
NeedRoomCard int32 `protobuf:"varint,14,opt,name=NeedRoomCard,proto3" json:"NeedRoomCard,omitempty"` // 消耗几张房卡获得一个开奖码
ImageURL string `protobuf:"bytes,15,opt,name=ImageURL,proto3" json:"ImageURL,omitempty"` // 图片地址
// 玩家数据
CostRoomCard int64 `protobuf:"varint,16,opt,name=CostRoomCard,proto3" json:"CostRoomCard,omitempty"` // 消耗房卡
Codes []string `protobuf:"bytes,17,rep,name=Codes,proto3" json:"Codes,omitempty"` // 本期获得号码
}
func (x *LotteryInfo) Reset() {
*x = LotteryInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[61]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *LotteryInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*LotteryInfo) ProtoMessage() {}
func (x *LotteryInfo) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[61]
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 LotteryInfo.ProtoReflect.Descriptor instead.
func (*LotteryInfo) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{61}
}
func (x *LotteryInfo) GetId() int64 {
if x != nil {
return x.Id
}
return 0
}
func (x *LotteryInfo) GetStartTs() int64 {
if x != nil {
return x.StartTs
}
return 0
}
func (x *LotteryInfo) GetEndTs() int64 {
if x != nil {
return x.EndTs
}
return 0
}
func (x *LotteryInfo) GetWinTs() int64 {
if x != nil {
return x.WinTs
}
return 0
}
func (x *LotteryInfo) GetRemainCode() int64 {
if x != nil {
return x.RemainCode
}
return 0
}
func (x *LotteryInfo) GetTotalCode() int64 {
if x != nil {
return x.TotalCode
}
return 0
}
func (x *LotteryInfo) GetAward() []*PropInfo {
if x != nil {
return x.Award
}
return nil
}
func (x *LotteryInfo) GetState() int32 {
if x != nil {
return x.State
}
return 0
}
func (x *LotteryInfo) GetWinCode() string {
if x != nil {
return x.WinCode
}
return ""
}
func (x *LotteryInfo) GetSnId() int32 {
if x != nil {
return x.SnId
}
return 0
}
func (x *LotteryInfo) GetName() string {
if x != nil {
return x.Name
}
return ""
}
func (x *LotteryInfo) GetIndex() int32 {
if x != nil {
return x.Index
}
return 0
}
func (x *LotteryInfo) GetPrice() int64 {
if x != nil {
return x.Price
}
return 0
}
func (x *LotteryInfo) GetNeedRoomCard() int32 {
if x != nil {
return x.NeedRoomCard
}
return 0
}
func (x *LotteryInfo) GetImageURL() string {
if x != nil {
return x.ImageURL
}
return ""
}
func (x *LotteryInfo) GetCostRoomCard() int64 {
if x != nil {
return x.CostRoomCard
}
return 0
}
func (x *LotteryInfo) GetCodes() []string {
if x != nil {
return x.Codes
}
return nil
}
//PACKET_SCLotteryInfo
type SCLotteryInfo struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Info []*LotteryInfo `protobuf:"bytes,1,rep,name=Info,proto3" json:"Info,omitempty"` // 抽奖活动信息
}
func (x *SCLotteryInfo) Reset() {
*x = SCLotteryInfo{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[62]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *SCLotteryInfo) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*SCLotteryInfo) ProtoMessage() {}
func (x *SCLotteryInfo) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[62]
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 SCLotteryInfo.ProtoReflect.Descriptor instead.
func (*SCLotteryInfo) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{62}
}
func (x *SCLotteryInfo) GetInfo() []*LotteryInfo {
if x != nil {
return x.Info
}
return nil
}
// 通知抽奖中奖
//PACKET_NotifyLotteryAward
type NotifyLotteryAward struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
Info *LotteryInfo `protobuf:"bytes,1,opt,name=Info,proto3" json:"Info,omitempty"` // 抽奖活动信息
}
func (x *NotifyLotteryAward) Reset() {
*x = NotifyLotteryAward{}
if protoimpl.UnsafeEnabled {
mi := &file_welfare_proto_msgTypes[63]
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
ms.StoreMessageInfo(mi)
}
}
func (x *NotifyLotteryAward) String() string {
return protoimpl.X.MessageStringOf(x)
}
func (*NotifyLotteryAward) ProtoMessage() {}
func (x *NotifyLotteryAward) ProtoReflect() protoreflect.Message {
mi := &file_welfare_proto_msgTypes[63]
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 NotifyLotteryAward.ProtoReflect.Descriptor instead.
func (*NotifyLotteryAward) Descriptor() ([]byte, []int) {
return file_welfare_proto_rawDescGZIP(), []int{63}
}
func (x *NotifyLotteryAward) GetInfo() *LotteryInfo {
if x != nil {
return x.Info
}
return nil
}
var File_welfare_proto protoreflect.FileDescriptor
var file_welfare_proto_rawDesc = []byte{
@ -4536,124 +4858,166 @@ var file_welfare_proto_rawDesc = []byte{
0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x73,
0x75, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x75,
0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x2a, 0xf5, 0x02, 0x0a, 0x0c, 0x4f, 0x70, 0x52,
0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10,
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e, 0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65,
0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f,
0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72,
0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10, 0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a,
0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07,
0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73,
0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d,
0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c,
0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61,
0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10,
0x0b, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c,
0x69, 0x6d, 0x69, 0x74, 0x10, 0x0d, 0x12, 0x13, 0x0a, 0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e,
0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a,
0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10,
0x2a, 0x9d, 0x0b, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14,
0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45,
0x52, 0x4f, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46,
0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c,
0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54,
0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47,
0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20,
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46,
0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14,
0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45,
0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10,
0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f,
0x10, 0x9a, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46,
0x4f, 0x10, 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43,
0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e,
0x46, 0x4f, 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49,
0x4e, 0x46, 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e,
0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e,
0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41,
0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54,
0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52,
0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54,
0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50,
0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54,
0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43,
0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f,
0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f,
0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22,
0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e,
0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10,
0xa9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57,
0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c,
0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16,
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76,
0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74,
0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c,
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61,
0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b,
0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61,
0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b,
0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b,
0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61,
0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64,
0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10,
0xe4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50,
0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49,
0x6e, 0x66, 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61,
0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61,
0x72, 0x64, 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16,
0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72,
0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c,
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69,
0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53,
0x68, 0x6f, 0x70, 0x10, 0xed, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17,
0x42, 0x27, 0x5a, 0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e,
0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
0x6c, 0x2f, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
0x33,
0x03, 0x52, 0x05, 0x70, 0x72, 0x69, 0x63, 0x65, 0x22, 0x0f, 0x0a, 0x0d, 0x43, 0x53, 0x4c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x22, 0xc8, 0x03, 0x0a, 0x0b, 0x4c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61,
0x72, 0x74, 0x54, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72,
0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01,
0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x57, 0x69, 0x6e,
0x54, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x57, 0x69, 0x6e, 0x54, 0x73, 0x12,
0x1e, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20,
0x01, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12,
0x1c, 0x0a, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x06, 0x20, 0x01,
0x28, 0x03, 0x52, 0x09, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x27, 0x0a,
0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x77,
0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x52,
0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18,
0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07,
0x57, 0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x57,
0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x0a,
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61,
0x6d, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14,
0x0a, 0x05, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49,
0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x18, 0x0d, 0x20,
0x01, 0x28, 0x03, 0x52, 0x05, 0x50, 0x72, 0x69, 0x63, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x65,
0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x05,
0x52, 0x0c, 0x4e, 0x65, 0x65, 0x64, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x1a,
0x0a, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09,
0x52, 0x08, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x55, 0x52, 0x4c, 0x12, 0x22, 0x0a, 0x0c, 0x43, 0x6f,
0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x18, 0x10, 0x20, 0x01, 0x28, 0x03,
0x52, 0x0c, 0x43, 0x6f, 0x73, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14,
0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x11, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x43,
0x6f, 0x64, 0x65, 0x73, 0x22, 0x39, 0x0a, 0x0d, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72,
0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20,
0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x22,
0x3e, 0x0a, 0x12, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x18, 0x01, 0x20,
0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x2e, 0x4c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e, 0x66, 0x6f, 0x2a,
0xf5, 0x02, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65,
0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10,
0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10,
0x01, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x54, 0x69, 0x6d, 0x65,
0x73, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x43, 0x6f, 0x69, 0x6e,
0x54, 0x6f, 0x6f, 0x4d, 0x6f, 0x72, 0x65, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x4f,
0x50, 0x52, 0x43, 0x5f, 0x41, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x42, 0x69, 0x6e, 0x64, 0x10,
0x05, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x42, 0x69, 0x6e, 0x64, 0x53, 0x65,
0x6c, 0x66, 0x10, 0x06, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4d, 0x79, 0x49,
0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x07, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f,
0x4e, 0x6f, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x10, 0x08, 0x12, 0x14, 0x0a, 0x10, 0x4f, 0x50,
0x52, 0x43, 0x5f, 0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x4c, 0x65, 0x73, 0x73, 0x10, 0x09,
0x12, 0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b,
0x4e, 0x6f, 0x74, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x0a, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52,
0x43, 0x5f, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x61, 0x6b,
0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x10, 0x0b, 0x12, 0x16, 0x0a, 0x12, 0x4f, 0x50, 0x52, 0x43,
0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0c,
0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67,
0x65, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x10, 0x0d, 0x12, 0x13, 0x0a,
0x0f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x65, 0x65, 0x64, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74,
0x10, 0x0e, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x43, 0x6f,
0x73, 0x74, 0x10, 0x0f, 0x12, 0x11, 0x0a, 0x0d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x4e, 0x6f, 0x74,
0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0x10, 0x2a, 0xf3, 0x0b, 0x0a, 0x09, 0x53, 0x50, 0x61, 0x63,
0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x48, 0x4f, 0x50, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x21, 0x0a, 0x1c, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45,
0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x94, 0x14, 0x12, 0x21,
0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46,
0x5f, 0x47, 0x45, 0x54, 0x52, 0x45, 0x4c, 0x49, 0x45, 0x46, 0x46, 0x55, 0x4e, 0x44, 0x10, 0x95,
0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57,
0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41, 0x54, 0x45,
0x10, 0x96, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x54, 0x55, 0x52, 0x4e, 0x50, 0x4c, 0x41,
0x54, 0x45, 0x10, 0x97, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44, 0x55, 0x50,
0x53, 0x49, 0x47, 0x4e, 0x10, 0x98, 0x14, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x47, 0x45, 0x54, 0x41, 0x44, 0x44,
0x55, 0x50, 0x53, 0x49, 0x47, 0x4e, 0x10, 0x99, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c, 0x46,
0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9a, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41,
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x57, 0x45, 0x4c,
0x46, 0x41, 0x52, 0x45, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9b, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42, 0x4c,
0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9c, 0x14, 0x12, 0x1f, 0x0a, 0x1a,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x42,
0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0x9d, 0x14, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f,
0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9e, 0x14, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f,
0x47, 0x45, 0x54, 0x42, 0x4c, 0x49, 0x4e, 0x42, 0x4f, 0x58, 0x10, 0x9f, 0x14, 0x12, 0x20, 0x0a,
0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f,
0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa0, 0x14, 0x12,
0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c,
0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa1,
0x14, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57,
0x45, 0x4c, 0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa2, 0x14, 0x12,
0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45, 0x4c,
0x46, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x50, 0x41, 0x59, 0x10, 0xa3, 0x14, 0x12, 0x21, 0x0a,
0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f,
0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f, 0x10, 0xa4, 0x14,
0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f, 0x57, 0x45,
0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x49, 0x4e, 0x46, 0x4f,
0x10, 0xa5, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x5f, 0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10,
0xa6, 0x14, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x5f,
0x57, 0x45, 0x4c, 0x46, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x49, 0x4e, 0x50, 0x41, 0x59, 0x10, 0xa7,
0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x5f, 0x53,
0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70, 0x32, 0x41, 0x77, 0x61,
0x72, 0x64, 0x10, 0xa8, 0x14, 0x12, 0x22, 0x0a, 0x1d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x79, 0x5f, 0x41, 0x64, 0x64, 0x75, 0x70,
0x32, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66,
0x10, 0xd4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x57, 0x65, 0x6c, 0x66, 0x52, 0x65, 0x6c, 0x69, 0x65, 0x66, 0x10, 0xd5, 0x16, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd6, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xd7,
0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x42, 0x69,
0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0xd8, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50,
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x42, 0x69, 0x6e, 0x64, 0x49, 0x6e, 0x76, 0x69,
0x74, 0x65, 0x10, 0xd9, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x43, 0x53, 0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f,
0x10, 0xde, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x50, 0x69, 0x67, 0x62, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf,
0x16, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x69,
0x67, 0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe0, 0x16,
0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x69, 0x67,
0x62, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0xe1, 0x16, 0x12,
0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x69, 0x61, 0x6d,
0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe2,
0x16, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x44, 0x69,
0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f,
0x10, 0xe3, 0x16, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x44, 0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x42, 0x61, 0x6e, 0x6b, 0x54, 0x61, 0x6b, 0x65, 0x44,
0x69, 0x61, 0x6d, 0x6f, 0x6e, 0x64, 0x10, 0xe4, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43,
0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f,
0x10, 0xe5, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe6, 0x16, 0x12, 0x20, 0x0a,
0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74,
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe7, 0x16, 0x12,
0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d,
0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe8,
0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x65,
0x72, 0x6d, 0x69, 0x74, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe9, 0x16, 0x12, 0x19, 0x0a, 0x14,
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x41,
0x77, 0x61, 0x72, 0x64, 0x10, 0xea, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
0x67, 0x65, 0x10, 0xeb, 0x16, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
0x10, 0xec, 0x16, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53,
0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x53, 0x68, 0x6f, 0x70, 0x10, 0xed, 0x16, 0x12, 0x18, 0x0a,
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74,
0x53, 0x68, 0x6f, 0x70, 0x10, 0x8c, 0x17, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45,
0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10,
0xee, 0x16, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c,
0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xef, 0x16, 0x12, 0x1e, 0x0a,
0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x4c, 0x6f,
0x74, 0x74, 0x65, 0x72, 0x79, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0xf0, 0x16, 0x42, 0x27, 0x5a,
0x25, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d,
0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x77,
0x65, 0x6c, 0x66, 0x61, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
}
var (
@ -4669,7 +5033,7 @@ func file_welfare_proto_rawDescGZIP() []byte {
}
var file_welfare_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 61)
var file_welfare_proto_msgTypes = make([]protoimpl.MessageInfo, 65)
var file_welfare_proto_goTypes = []interface{}{
(OpResultCode)(0), // 0: welfare.OpResultCode
(SPacketID)(0), // 1: welfare.SPacketID
@ -4733,7 +5097,11 @@ var file_welfare_proto_goTypes = []interface{}{
(*SCPermitExchange)(nil), // 59: welfare.SCPermitExchange
(*CSPermitShop)(nil), // 60: welfare.CSPermitShop
(*SCPermitShop)(nil), // 61: welfare.SCPermitShop
nil, // 62: welfare.SCInviteInfo.PayScoreEntry
(*CSLotteryInfo)(nil), // 62: welfare.CSLotteryInfo
(*LotteryInfo)(nil), // 63: welfare.LotteryInfo
(*SCLotteryInfo)(nil), // 64: welfare.SCLotteryInfo
(*NotifyLotteryAward)(nil), // 65: welfare.NotifyLotteryAward
nil, // 66: welfare.SCInviteInfo.PayScoreEntry
}
var file_welfare_proto_depIdxs = []int32{
0, // 0: welfare.SCGetReliefFund.OpRetCode:type_name -> welfare.OpResultCode
@ -4760,7 +5128,7 @@ var file_welfare_proto_depIdxs = []int32{
0, // 21: welfare.SCWelfareContinuousPayData.OpRetCode:type_name -> welfare.OpResultCode
23, // 22: welfare.SCWelfareContinuousPayData.List:type_name -> welfare.WelfareSpree
0, // 23: welfare.SCWelfareContinuousPay.OpRetCode:type_name -> welfare.OpResultCode
62, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry
66, // 24: welfare.SCInviteInfo.PayScore:type_name -> welfare.SCInviteInfo.PayScoreEntry
35, // 25: welfare.SCInviteInfo.Awards1:type_name -> welfare.RankAward
35, // 26: welfare.SCInviteInfo.Awards2:type_name -> welfare.RankAward
35, // 27: welfare.SCInviteInfo.Awards3:type_name -> welfare.RankAward
@ -4783,11 +5151,14 @@ var file_welfare_proto_depIdxs = []int32{
47, // 44: welfare.ShopInfo.Cost:type_name -> welfare.PropInfo
56, // 45: welfare.SCPermitExchangeList.List:type_name -> welfare.ShopInfo
0, // 46: welfare.SCPermitExchange.OpRetCode:type_name -> welfare.OpResultCode
47, // [47:47] is the sub-list for method output_type
47, // [47:47] is the sub-list for method input_type
47, // [47:47] is the sub-list for extension type_name
47, // [47:47] is the sub-list for extension extendee
0, // [0:47] is the sub-list for field type_name
47, // 47: welfare.LotteryInfo.Award:type_name -> welfare.PropInfo
63, // 48: welfare.SCLotteryInfo.Info:type_name -> welfare.LotteryInfo
63, // 49: welfare.NotifyLotteryAward.Info:type_name -> welfare.LotteryInfo
50, // [50:50] is the sub-list for method output_type
50, // [50:50] is the sub-list for method input_type
50, // [50:50] is the sub-list for extension type_name
50, // [50:50] is the sub-list for extension extendee
0, // [0:50] is the sub-list for field type_name
}
func init() { file_welfare_proto_init() }
@ -5516,6 +5887,54 @@ func file_welfare_proto_init() {
return nil
}
}
file_welfare_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*CSLotteryInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_welfare_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*LotteryInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_welfare_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*SCLotteryInfo); i {
case 0:
return &v.state
case 1:
return &v.sizeCache
case 2:
return &v.unknownFields
default:
return nil
}
}
file_welfare_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} {
switch v := v.(*NotifyLotteryAward); 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{
@ -5523,7 +5942,7 @@ func file_welfare_proto_init() {
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
RawDescriptor: file_welfare_proto_rawDesc,
NumEnums: 2,
NumMessages: 61,
NumMessages: 65,
NumExtensions: 0,
NumServices: 0,
},

View File

@ -79,6 +79,10 @@ enum SPacketID {
PACKET_CSPermitShop = 2925; //
PACKET_SCPermitShop = 2956; //
PACKET_CSLotteryInfo = 2926; //
PACKET_SCLotteryInfo = 2927; //
PACKET_NotifyLotteryAward = 2928; //
}
//
@ -498,4 +502,41 @@ message SCPermitShop{
string Name = 2; //
int32 Consume = 3; // 1 2
int64 price = 4; //
}
//
//PACKET_CSLotteryInfo
message CSLotteryInfo{
}
message LotteryInfo {
int64 Id = 1; // id
int64 StartTs = 2; //
int64 EndTs = 3; //
int64 WinTs = 4; //
int64 RemainCode = 5; //
int64 TotalCode = 6; //
repeated PropInfo Award = 7; //
int32 State = 8; // 1 2 3
string WinCode = 9; //
int32 SnId = 10; // id
string Name = 11; //
int32 Index = 12; //
int64 Price = 13; //
int32 NeedRoomCard = 14; //
string ImageURL = 15; //
//
int64 CostRoomCard = 16; //
repeated string Codes = 17; //
}
//PACKET_SCLotteryInfo
message SCLotteryInfo{
repeated LotteryInfo Info = 1; //
}
//
//PACKET_NotifyLotteryAward
message NotifyLotteryAward{
LotteryInfo Info = 1; //
}

View File

@ -30,6 +30,8 @@ func init() {
com.Register(int(rankproto.Rank_PACKET_RANK_CSPermit), rankproto.CSPermit{}, CSPermit)
// 竞技馆获奖记录
com.Register(int(rankproto.Rank_PACKET_CSRoomAward), rankproto.CSRoomAward{}, CSRoomAward)
// 竞技馆获奖记录
com.Register(int(rankproto.Rank_PACKET_CSLotteryHistory), rankproto.CSLotteryHistory{}, CSLotteryHistory)
}
func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
@ -567,9 +569,11 @@ func CSRoomAward(s *netlib.Session, d *rankproto.GateTransmit, packetId int, dat
if end > start && int(start) < len(list) {
for _, v := range list[start:end] {
r := &rankproto.UserAward{
Snid: v.SnId,
Name: v.Name,
Ts: v.EndTs,
Snid: v.SnId,
Name: v.Name,
Ts: v.EndTs,
Price: v.Price,
ImageURL: v.ImageURL,
}
for _, vv := range v.Awards {
r.Awards = append(r.Awards, &rankproto.Item{
@ -592,3 +596,53 @@ func CSRoomAward(s *netlib.Session, d *rankproto.GateTransmit, packetId int, dat
})
return nil
}
func CSLotteryHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
logger.Logger.Trace("CSLotteryHistory data:", data)
_, ok := data.(*rankproto.CSLotteryHistory)
if !ok {
return nil
}
rank.LotteryLogMgrInstance.Take(d.Platform, 0, func(list []*model.LotteryLog, err error) {
if err != nil {
logger.Logger.Errorf("CSLotteryHistory error: %v", err)
return
}
var ranks []*rankproto.LotteryHistory
for _, v := range list {
r := &rankproto.LotteryHistory{
Ts: v.CTime.Unix(),
Index: v.Num,
SnId: v.SnId,
Name: v.Name,
}
for _, vv := range v.Award {
r.Award = append(r.Award, &rankproto.Item{
Id: int32(vv.Id),
N: vv.N,
})
}
for _, vv := range com.ConfigMgrInst.GetConfig(d.Platform).LotteryShows {
if vv.GetOn() != common.On {
continue
}
if common.TsInSameDay(vv.GetTime(), r.GetTs()) && vv.GetNum() == int64(r.GetIndex()) {
r.Show = append(r.Show, &rankproto.LotteryShow{
Tp: vv.GetTp(),
Url: vv.GetUrl(),
ImgUrl: vv.GetImgUrl(),
})
}
}
ranks = append(ranks, r)
}
pack := &rankproto.SCLotteryHistory{
List: ranks,
}
common.SendToGate(sid, int(rankproto.Rank_PACKET_SCLotteryHistory), pack, s)
logger.Logger.Tracef("SCLotteryHistory: %v", pack)
})
return nil
}

View File

@ -17,6 +17,8 @@ func init() {
etcd.Register(etcd.ETCDKEY_PLATFORM_PREFIX, webapi.Platform{}, PlatformConfigEtcd)
// 竞技馆房间配置
etcd.Register(etcd.ETCDKEY_RoomConfig, webapi.RoomConfig{}, PlatformConfigEtcd)
// 抽奖展示
etcd.Register(etcd.ETCDKEY_LotteryShow, webapi.ShowLottery{}, etcdHandler)
}
func PlatformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@ -28,5 +30,19 @@ func PlatformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev
PlatformConfigSingleton.Update(config)
case *webapi.RoomConfig:
ConfigMgrInst.UpdateRoomConfig(config)
case *webapi.ShowLottery:
ConfigMgrInst.GetConfig(config.Platform).LotteryShows[config.GetId()] = config
}
}
func etcdHandler(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
switch config := data.(type) {
case *webapi.ShowLottery:
switch event.Type {
case clientv3.EventTypePut:
ConfigMgrInst.GetConfig(config.Platform).LotteryShows[config.GetId()] = config
case clientv3.EventTypeDelete:
delete(ConfigMgrInst.GetConfig(config.Platform).LotteryShows, config.GetId())
}
}
}

View File

@ -1,6 +1,8 @@
package mq
import (
"mongo.games.com/goserver/core"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/srvlib"
"mongo.games.com/goserver/srvlib/action"
@ -32,24 +34,46 @@ func InitHandler() {
if !ok {
return nil
}
rank.CustomAwardMgrInstance.UpdateCache(log.Platform, 0)
var awards []*rankproto.Item
for _, v := range log.Awards {
awards = append(awards, &rankproto.Item{
Id: v.ItemId,
N: v.ItemNum,
})
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
rank.CustomAwardMgrInstance.UpdateCache(log.Platform, 0)
var awards []*rankproto.Item
for _, v := range log.Awards {
awards = append(awards, &rankproto.Item{
Id: v.ItemId,
N: v.ItemNum,
})
}
pack := &rankproto.UserAward{
Snid: log.SnId,
Name: log.Name,
Awards: awards,
Ts: log.EndTs,
}
action.BroadcastMessage(common.GetSelfAreaId(), srvlib.GateServerType, int(rankproto.Rank_PACKET_SCRoomAwardOne), pack, nil)
logger.Logger.Tracef("SCRoomAwardOne %v", pack)
return nil
}), true)
return nil
},
})
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.DBLotteryLog,
Data: &model.LotteryLog{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.LotteryLog)
if !ok {
return nil
}
pack := &rankproto.UserAward{
Snid: log.SnId,
Name: log.Name,
Awards: awards,
Ts: log.EndTs,
}
action.BroadcastMessage(common.GetSelfAreaId(), srvlib.GateServerType, int(rankproto.Rank_PACKET_SCRoomAwardOne), pack, nil)
logger.Logger.Tracef("SCRoomAwardOne %v", pack)
return
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
rank.LotteryLogMgrInstance.UpdateCache(log.Platform, 0)
return nil
}), true)
return nil
},
})
}

View File

@ -82,6 +82,8 @@ func (c *CustomAwardMgr) Update() {
Awards: awards,
StartTs: nowTime.Add(-time.Minute * 8).Unix(),
EndTs: nowTime.Unix(),
Price: vv.GetPrice(),
ImageURL: vv.GetImageURI(),
})
break
}

24
ranksrv/rank/lottery.go Normal file
View File

@ -0,0 +1,24 @@
package rank
import (
"time"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/game/model"
"mongo.games.com/game/ranksrv/com"
)
var LotteryLogMgrInstance = com.NewListMgr[*model.LotteryLog](
func() int64 {
return int64(time.Hour.Seconds()) // 缓存1小时
},
func(platform string, index int32) ([]*model.LotteryLog, error) {
logger.Logger.Tracef("load LotteryLog platform:%s", platform)
ret, err := model.GetLotteryLogs(platform, 50)
if err != nil {
logger.Logger.Errorf("load LotteryLog err:%s", err.Error())
return nil, err
}
return ret, nil
})

View File

@ -1,4 +1,4 @@
set deployDir="..\deploy"
set deployDir=".\deploy"
xcopy .\data\* %deployDir%\data\ /s /e /y

View File

@ -28,6 +28,12 @@ func CSChatMsgHandler(s *netlib.Session, packetid int, data interface{}, sid int
logger.Logger.Warn("CSChatMsgHandler platform == nil")
return nil
}
if msg.GetHead() > 0 {
PlayerSubjectSign.UpdateHead(p.SnId, msg.GetHead())
}
if msg.GetName() != "" {
PlayerSubjectSign.UpdateName(p.SnId, msg.GetName())
}
var content = msg.GetContent()
if len(content) > 150 {
logger.Logger.Warn("CSChatMsgHandler len(content) > 150")

View File

@ -1329,6 +1329,8 @@ func CSCreatePrivateRoomHandler(s *netlib.Session, packetId int, data interface{
CostType: int32(costType),
Password: password,
Voice: int32(voice),
Price: cfg.GetPrice(),
ImageURL: cfg.GetImageURI(),
},
})

View File

@ -0,0 +1,51 @@
package main
import (
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/netlib"
"mongo.games.com/game/common"
"mongo.games.com/game/protocol/welfare"
)
func init() {
common.Register(int(welfare.SPacketID_PACKET_CSLotteryInfo), &welfare.CSLotteryInfo{}, CSLotteryInfoHandler)
}
func CSLotteryInfoHandler(s *netlib.Session, packetid int, data interface{}, sid int64) error {
logger.Logger.Tracef("CSLotteryInfo Process recv %v", data)
_, ok := data.(*welfare.CSLotteryInfo)
if !ok {
return nil
}
p := PlayerMgrSington.GetPlayer(sid)
if p == nil {
return nil
}
pack := &welfare.SCLotteryInfo{}
var list []*welfare.LotteryInfo
cfg := PlatformMgrSingleton.GetConfig(p.Platform).LotteryConfig
if cfg != nil {
list = LotteryMgrInst.GetList(p.Platform)
pack.Info = list
}
// player lottery info
info := PlayerInfoMgrSingle.Players[p.SnId]
if info != nil {
// 当前开启中的抽奖活动id
for _, v := range list {
playerLottery := info.Lottery[v.GetId()]
if playerLottery != nil && playerLottery.StartTs == v.GetStartTs() {
v.CostRoomCard = playerLottery.CostCard
v.Codes = playerLottery.Code
}
}
}
p.SendToClient(int(welfare.SPacketID_PACKET_SCLotteryInfo), pack)
logger.Logger.Tracef("SCLotteryInfo: %v", pack)
return nil
}

View File

@ -126,3 +126,25 @@ func AddMailClientUpgrade(snid int32, items []*webapi.ItemInfo) {
ShowId: model.HallAll,
})
}
func AddMailLottery(snid int32, items []*model.ItemInfo) {
var arr []*model.Item
for _, v := range items {
arr = append(arr, &model.Item{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
})
}
title := i18n.Tr("languages", "LotteryTitle")
content := i18n.Tr("languages", "Lottery")
AddMail(&AddMailParam{
Tp: model.MSGTYPE_Lottery,
SnId: snid,
Title: title,
Content: content,
Items: arr,
ShowId: model.HallAll,
})
}

View File

@ -796,12 +796,12 @@ func (this *BagMgr) AddItemsOffline(param *model.AddItemParam, callback func(err
}
return nil
}), task.CompleteNotifyWrapper(func(data interface{}, t task.Task) {
logger.Logger.Tracef("AddItemsOffline error(%v) Player:%+v", data, *findPlayer)
if data != nil || findPlayer == nil {
logger.Logger.Errorf("AddItemsOffline Error %v", data)
callback(errors.New("AddItemsOffline failed"))
return
}
logger.Logger.Tracef("AddItemsOffline error(%v) Player:%+v", data, *findPlayer)
callback(nil)
})).StartByExecutor(fmt.Sprintf("Player%v", param.SnId))
}

View File

@ -126,6 +126,7 @@ func (c *CustomRoomMgr) GetRoomList(plt string) []*gamehall.PrivateRoomInfo {
var ret []*gamehall.PrivateRoomInfo
for _, v := range d.List {
if v != nil && v.PrivateRoomInfo != nil {
v.IsSystem = true // 标记为系统房间
ret = append(ret, v.PrivateRoomInfo)
}
}

View File

@ -3,14 +3,7 @@ package main
import (
"context"
"encoding/json"
"strconv"
"strings"
"go.etcd.io/etcd/client/v3"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/task"
"mongo.games.com/game/common"
"mongo.games.com/game/etcd"
"mongo.games.com/game/model"
@ -21,6 +14,11 @@ import (
serverproto "mongo.games.com/game/protocol/server"
"mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/srvdata"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/task"
"strconv"
"strings"
)
func init() {
@ -104,6 +102,12 @@ func init() {
etcd.Register(etcd.ETCDKEY_ClientUpgrade, webapi.ClientUpgrade{}, platformConfigEvent)
//弹窗活动配置
etcd.Register(etcd.ETCDKEY_PopUpWindow, webapi.PopUpWindowConfig{}, platformConfigEvent)
// 竞技馆抽奖配置
etcd.Register(etcd.ETCDKEY_LotteryConfig, webapi.LotteryConfig{}, platformConfigEvent)
// 用户抽奖
etcd.Register(etcd.ETCDKEY_LotteryUser, webapi.UserLottery{}, handlerEvent)
// 抽奖展示
etcd.Register(etcd.ETCDKEY_LotteryShow, webapi.ShowLottery{}, handlerEvent)
}
func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
@ -342,6 +346,9 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e
PlatformMgrSingleton.GetConfig(config.Platform).ClientUpgrade = config
case *webapi.PopUpWindowConfig:
PlatformMgrSingleton.GetConfig(config.Platform).PopUpWindowConfig = config
case *webapi.LotteryConfig:
PlatformMgrSingleton.GetConfig(config.Platform).LotteryConfig = config
LotteryMgrInst.UpdateConfig(config)
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}
@ -546,6 +553,38 @@ func handlerEvent(ctx context.Context, completeKey string, isInit bool, event *c
delete(PlatformMgrSingleton.GetConfig(plt).RoomConfigSystem, int32(param[0]))
}
case equalFunc(etcd.ETCDKEY_LotteryUser):
switch event.Type {
case clientv3.EventTypePut:
if data == nil {
return
}
config := data.(*webapi.UserLottery)
config.Time = model.BackTimeUnixToLocalTimeUnix(config.Time)
PlatformMgrSingleton.GetConfig(config.GetPlatform()).LotteryUser[config.GetId()] = config
case clientv3.EventTypeDelete:
if plt == "" || len(param) == 0 {
return
}
delete(PlatformMgrSingleton.GetConfig(plt).LotteryUser, int64(param[0]))
}
case equalFunc(etcd.ETCDKEY_LotteryShow):
switch event.Type {
case clientv3.EventTypePut:
if data == nil {
return
}
config := data.(*webapi.ShowLottery)
config.Time = model.BackTimeUnixToLocalTimeUnix(config.Time)
PlatformMgrSingleton.GetConfig(config.GetPlatform()).LotteryShows[config.GetId()] = config
case clientv3.EventTypeDelete:
if plt == "" || len(param) == 0 {
return
}
delete(PlatformMgrSingleton.GetConfig(plt).LotteryShows, int64(param[0]))
}
default:
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
}

View File

@ -42,7 +42,7 @@ var HorseRaceLampMgrSington = &HorseRaceLampMgr{
type HorseRaceLampMgr struct {
HorseRaceLampMsgList map[string]*HorseRaceLamp
HorseRaceLampGameList map[string][]*HorseRaceLamp
HorseRaceLampCastList map[string]*HorseRaceLampCastInfo
HorseRaceLampCastList map[string]*HorseRaceLampCastInfo // 平台:跑马灯
NextGameHorseRaceLamp map[string]int64
}

View File

@ -17,9 +17,9 @@ type PlayerLoadReplay struct {
// 重连不会执行
type IPlayerLoad interface {
// Load 查询数据库在task中执行
Load(platform string, snid int32, player any) *PlayerLoadReplay
Load(platform string, snid int32, data any) *PlayerLoadReplay
// Callback 数据查询成功的回掉方法
Callback(player any, ret *PlayerLoadReplay)
Callback(data any, ret *PlayerLoadReplay)
}
// IPlayerLogined 玩家登录之后加载其他玩家数据

701
worldsrv/lotterymgr.go Normal file
View File

@ -0,0 +1,701 @@
package main
import (
"fmt"
"sort"
"strconv"
"time"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/module"
"mongo.games.com/goserver/core/task"
"mongo.games.com/game/common"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
"mongo.games.com/game/protocol/webapi"
"mongo.games.com/game/protocol/welfare"
)
const (
LotteryRoomCard = 10 // 几张房卡获得一个抽奖码
)
var LotteryMgrInst = &LotteryMgr{
Data: make(map[string]map[int64]*LotteryData),
PlatformConfig: make(map[string]*LotteryConfig),
}
func init() {
module.RegisteModule(LotteryMgrInst, time.Minute, 0)
common.RegisterClockFunc(&common.ClockFunc{
OnDayTimerFunc: func() {
for _, v := range LotteryMgrInst.PlatformConfig {
if v == nil {
continue
}
if v.IsCycle {
// 每天重置抽奖数据
LotteryMgrInst.Reset()
// 重置抽奖期数
for _, v := range LotteryMgrInst.PlatformConfig {
if v != nil {
v.Num = 0
}
}
// 重置玩家抽奖数据
for _, v := range PlayerInfoMgrSingle.Players {
v.Lottery = make(map[int64]*model.Lottery)
}
}
}
},
})
}
// LotteryData 抽奖数据
type LotteryData struct {
*model.LotteryData
}
// Reset 重置抽奖数据
func (l *LotteryData) Reset() {
if l == nil {
return
}
cfg := PlatformMgrSingleton.GetLotteryConfig(l.Platform, l.CId)
if cfg == nil {
return
}
l.StartTs = common.IntToTime(int(cfg.GetStartHMS())).Unix()
l.EndTs = common.IntToTime(int(cfg.GetEndHMS())).Unix()
l.WinTs = common.IntToTime(int(cfg.GetWinHMS())).Unix()
l.Price = cfg.GetPrice()
l.RobotCodeNum = cfg.GetRobotCode()
l.TotalCode = cfg.GetTotalCode()
l.Reward = nil
for _, v := range cfg.GetReward() {
l.Reward = append(l.Reward, &model.ItemInfo{
ItemId: v.GetItemId(),
ItemNum: v.GetItemNum(),
})
}
long := len(fmt.Sprintf("%d", cfg.GetTotalCode()-1))
if long < 1 {
long = 1
}
l.Format = "%0" + fmt.Sprintf("%d", long) + "d"
l.ImageURL = cfg.GetImageURI()
l.CustomAward = 0
l.Code = 0
l.PlayerIndex = 0
l.RobotIndex = 0
l.SnId = 0
l.Name = ""
l.WinCostCard = 0
l.WinCode = ""
l.IsRobot = false
l.IsSend = false
l.CostCard = 0
l.RobotCodeCount = 0
l.PlayerNum = 0
}
// GetCode 获取抽奖码
func (l *LotteryData) GetCode() (string, bool) {
if l == nil {
return "", false
}
if l.Code < int(l.TotalCode) {
ret := fmt.Sprintf("%d", l.Code)
l.Code++
return ret, true
}
return "", false
}
func (l *LotteryData) GetPlayerIndex() int {
l.PlayerIndex++
return l.PlayerIndex
}
func (l *LotteryData) GetRobotIndex() int {
l.RobotIndex++
return l.RobotIndex
}
// GetRemainCode 获取剩余抽奖码数量
func (l *LotteryData) GetRemainCode() int {
if l == nil {
return 0
}
return int(l.TotalCode) - l.Code
}
// 发奖
func (l *LotteryData) sendAward() {
now := time.Now()
if l.WinTs <= 0 || l.WinTs >= now.Unix() || l.IsSend || l.WinCode == "" || l.SnId == 0 {
return
}
l.IsSend = true
if l.IsRobot {
return
}
AddMailLottery(l.SnId, l.Reward)
// 通知
if p := PlayerMgrSington.GetPlayerBySnId(l.SnId); p != nil {
var lotteryAward []*welfare.PropInfo
for _, v := range l.Reward {
lotteryAward = append(lotteryAward, &welfare.PropInfo{
ItemId: v.ItemId,
ItemNum: v.ItemNum,
})
}
var codes []string
info := PlayerInfoMgrSingle.Players[p.SnId]
if info != nil {
if lt := info.Lottery[l.CId]; lt != nil && lt.StartTs == l.StartTs {
codes = lt.Code
}
}
pack := &welfare.NotifyLotteryAward{
Info: &welfare.LotteryInfo{
Id: l.CId,
StartTs: l.StartTs,
EndTs: l.EndTs,
WinTs: l.WinTs,
RemainCode: int64(l.GetRemainCode()),
TotalCode: l.TotalCode,
Award: lotteryAward,
State: common.LotteryStateOver,
WinCode: l.WinCode,
SnId: l.SnId,
Name: l.Name,
Index: int32(l.Num),
Price: l.Price,
NeedRoomCard: LotteryRoomCard,
ImageURL: l.ImageURL,
CostRoomCard: l.WinCostCard,
Codes: codes,
},
}
p.SendToClient(int(welfare.SPacketID_PACKET_NotifyLotteryAward), pack)
logger.Logger.Tracef("NotifyLotteryAward: %v", pack)
}
}
func (l *LotteryData) sendRobotCode(a, b int) {
// 随机给机器人发放抽奖码
now := time.Now()
if l.StartTs <= now.Unix() && l.EndTs > now.Unix() && l.RobotCodeCount < int(l.RobotCodeNum) && l.GetRemainCode() > 0 {
n := common.RandInt(a, b)
for i := 0; i < n; i++ {
code, b := l.GetCode()
if b {
l.RobotCodeCount++
// 开奖码记录
mq.Write(&model.LotteryCode{
Platform: l.Platform,
SnId: 0,
CId: l.CId,
StartTs: l.StartTs,
Code: code,
Index: l.GetRobotIndex(),
})
if l.RobotCodeCount >= int(l.RobotCodeNum) || l.GetRemainCode() <= 0 {
break
}
}
}
}
}
// Done 抽奖
func (l *LotteryData) Done() {
now := time.Now()
if l.EndTs <= 0 || l.EndTs >= now.Unix() || l.SnId > 0 {
return
}
sTs := common.GetDayStartTs(now.Unix())
eTs := sTs + int64(time.Hour.Seconds()*24)
if l.StartTs < sTs || l.StartTs >= eTs {
return
}
lotteryLog := &model.LotteryLog{} // 中奖记录
var err error
var awardPlayer *Player // 中奖玩家
var joinNum int // 参与人数
var code *model.LotteryCode // 开奖码
var costCard int64 // 消耗房卡
var isMust bool // 是否必中
var index int // 开奖码序号
var tp int // 开奖类型
// 先随机一个机器人
for _, v := range PlayerMgrSington.snidMap {
if v == nil {
continue
}
if !v.IsRob {
continue
}
awardPlayer = v
break
}
if awardPlayer == nil {
awardPlayer = &Player{
PlayerData: &model.PlayerData{},
}
}
// 是否必中
for _, v := range PlatformMgrSingleton.GetConfig(l.Platform).LotteryUser {
if v.GetOn() != common.On {
continue
}
if common.TsInSameDay(v.GetTime(), l.StartTs) && v.GetNum() == int64(l.Num+1) {
// 必中
isMust = true
tp = 1
index = common.RandInt(1, l.RobotIndex)
awardPlayer.SnId = v.GetSnId()
awardPlayer.IsRob = false
break
}
}
if !isMust {
value := float64(l.CostCard*10-l.CustomAward) / float64(l.Price)
switch {
case value <= 1.2:
// 机器人开奖
tp = 1
index = common.RandInt(1, l.RobotIndex)
case value <= 5:
// 机器人加玩家开奖
tp = 2
index = common.RandInt(1, l.Code)
default:
// 玩家开奖
tp = 3
index = common.RandInt(1, l.PlayerIndex)
}
}
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
// 查询参与人数
joinNum, err = model.GetLotteryCodeJoinNum(l.Platform, l.CId, l.StartTs)
if err != nil {
logger.Logger.Errorf("GetLotteryCodeJoinNum error:%v", err)
return err
}
// 查询开奖码
code, err = model.GetLotteryCodeRandom(l.Platform, l.CId, l.StartTs, tp, index)
if err != nil {
logger.Logger.Errorf("GetLotteryCodeRandom error:%v", err)
return err
}
if code != nil && isMust {
code.SnId = awardPlayer.SnId
}
// 查询玩家消耗
if code != nil && code.SnId > 0 {
list, err := model.GetLottery(l.Platform, code.SnId, l.CId, l.StartTs)
if err != nil {
logger.Logger.Errorf("GetLottery error:%v", err)
return err
}
for _, v := range list {
if v.CId == l.CId && v.StartTs == l.StartTs {
costCard = v.CostCard
break
}
}
p := PlayerMgrSington.GetPlayerBySnId(code.SnId)
if p == nil {
playerData := model.GetPlayerBaseInfo(l.Platform, code.SnId)
if playerData != nil {
awardPlayer = &Player{
PlayerData: &model.PlayerData{
SnId: playerData.SnId,
Name: playerData.Name,
},
}
}
}
}
return nil
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
if code == nil && isMust {
code = &model.LotteryCode{
Platform: l.Platform,
SnId: awardPlayer.SnId,
CId: l.CId,
StartTs: l.StartTs,
Code: fmt.Sprintf("%d", l.TotalCode),
}
}
if code == nil {
return
}
if code.SnId > 0 {
p := PlayerMgrSington.GetPlayerBySnId(code.SnId)
if p != nil {
awardPlayer = p
if info := PlayerInfoMgrSingle.Players[p.SnId]; info != nil {
c := info.Lottery[l.CId]
if c != nil && c.StartTs == l.StartTs {
costCard = c.CostCard
}
}
}
}
l.PlayerNum = int32(joinNum)
// 记录中奖结果
if awardPlayer != nil {
l.Num = int(LotteryMgrInst.GetNum(l.Platform))
l.SnId = awardPlayer.SnId
l.Name = awardPlayer.Name
l.WinCostCard = costCard
l.WinCode = code.Code
l.IsRobot = awardPlayer.IsRobot()
var lotteryAward []*model.LotteryAward
for _, v := range l.Reward {
lotteryAward = append(lotteryAward, &model.LotteryAward{
Id: int64(v.ItemId),
N: v.ItemNum,
})
}
lotteryLog = &model.LotteryLog{
Platform: l.Platform,
CId: l.CId,
CTime: time.Unix(l.StartTs, 0),
Num: int32(l.Num),
SnId: awardPlayer.SnId,
Name: awardPlayer.Name,
PlayerNum: int64(joinNum),
Code: l.WinCode,
CostCard: l.CostCard,
IsRobot: awardPlayer.IsRobot(),
Award: lotteryAward,
Price: l.Price,
IsMust: isMust,
ImageURL: l.ImageURL,
Ts: l.WinTs,
}
mq.Write(lotteryLog)
// 开始发奖
l.sendAward()
}
}), "LotterySendAward").Start()
}
type LotteryConfig struct {
IsCycle bool
Num int64
}
// LotteryMgr 抽奖管理
type LotteryMgr struct {
Data map[string]map[int64]*LotteryData // 平台:抽奖配置id:抽奖数据
PlatformConfig map[string]*LotteryConfig
}
func (l *LotteryMgr) ModuleName() string {
return "LotteryMgr"
}
func (l *LotteryMgr) Init() {
// 加载抽奖活动数据
for _, v := range PlatformMgrSingleton.GetPlatforms() {
if v != nil {
data, err := model.GetLotteryData(v.IdStr)
if err != nil {
panic(fmt.Sprintf("GetLotteryData error:%v", err))
}
for _, d := range data {
ld := l.GetData(v.IdStr, d.CId)
ld.LotteryData = d
ld.Platform = v.IdStr
}
}
}
}
func (l *LotteryMgr) Update() {
for _, v := range l.Data {
for _, d := range v {
if d == nil {
continue
}
lc := PlatformMgrSingleton.GetLotteryConfig(d.Platform, d.CId)
if lc == nil || lc.GetOn() != common.On {
continue
}
// 随机给机器人发放抽奖码
d.sendRobotCode(1, 5)
// 活动结束,开始抽奖
d.Done()
// 开始发奖
d.sendAward()
}
}
}
func (l *LotteryMgr) Shutdown() {
for k, v := range l.Data {
var arr []*model.LotteryData
for _, d := range v {
if d.LotteryData == nil {
continue
}
arr = append(arr, d.LotteryData)
}
model.UpsertLotteryData(k, arr)
}
module.UnregisteModule(l)
}
func (l *LotteryMgr) Reset() {
// 重置抽奖数据
for _, v := range LotteryMgrInst.Data {
for _, d := range v {
if d == nil {
continue
}
d.Reset()
}
}
}
func (l *LotteryMgr) UpdateConfig(conf *webapi.LotteryConfig) {
now := time.Now()
// 删除不存在的活动
for k, v := range l.Data {
var id []int64
for _, d := range v {
if d == nil {
continue
}
has := false
for _, vv := range conf.GetList() {
if vv.GetId() == d.CId {
has = true
break
}
}
if !has {
id = append(id, d.CId)
}
}
for _, i := range id {
delete(l.Data[k], i)
}
}
// 更新活动配置,已结束,开始中的不能修改
for _, v := range conf.GetList() {
if v.GetTotalCode() <= 0 {
v.TotalCode = 1
}
data := l.GetData(conf.GetPlatform(), v.GetId())
if data.EndTs > 0 && (data.EndTs < now.Unix() || data.StartTs <= now.Unix()) {
continue
} else {
data.Reset()
}
}
l.GetConfig(conf.GetPlatform()).IsCycle = conf.GetCycle() == common.On
}
func (l *LotteryMgr) GetConfig(plt string) *LotteryConfig {
_, ok := l.PlatformConfig[plt]
if !ok {
l.PlatformConfig[plt] = &LotteryConfig{}
}
return l.PlatformConfig[plt]
}
func (l *LotteryMgr) GetData(plt string, cid int64) *LotteryData {
if l.Data[plt] == nil {
l.Data[plt] = make(map[int64]*LotteryData)
}
if l.Data[plt][cid] == nil {
l.Data[plt][cid] = &LotteryData{
LotteryData: &model.LotteryData{
Platform: plt,
CId: cid,
},
}
}
return l.Data[plt][cid]
}
// GetNum 获取抽奖第几期
// 当前抽奖是第几期
func (l *LotteryMgr) GetNum(plt string) int64 {
p := l.GetConfig(plt)
if p.Num == 0 {
p.Num = 1
return 1
}
p.Num += 1
return p.Num
}
// GetList 获取抽奖列表
func (l *LotteryMgr) GetList(plt string) []*welfare.LotteryInfo {
now := time.Now()
ret := make([]*welfare.LotteryInfo, 0)
for _, d := range l.Data[plt] {
lc := PlatformMgrSingleton.GetLotteryConfig(d.Platform, d.CId)
if lc == nil || lc.GetOn() != common.On {
continue
}
// 是否活动已经结束
p := l.GetConfig(d.Platform)
if !p.IsCycle && !common.TsInSameDay(d.StartTs, now.Unix()) {
continue
}
var award []*welfare.PropInfo
for _, a := range d.Reward {
award = append(award, &welfare.PropInfo{
ItemId: a.ItemId,
ItemNum: a.ItemNum,
})
}
state := 1
switch {
case d.EndTs < now.Unix():
state = common.LotteryStateOver // 已结束
case d.StartTs > now.Unix():
state = common.LotteryStateNoStart // 未开始
default:
state = common.LotteryStateRun // 进行中
}
ret = append(ret, &welfare.LotteryInfo{
Id: d.CId,
StartTs: d.StartTs,
EndTs: d.EndTs,
WinTs: d.WinTs,
RemainCode: int64(d.GetRemainCode()),
TotalCode: d.TotalCode,
Award: award,
State: int32(state),
WinCode: d.WinCode,
SnId: d.SnId,
Name: d.Name,
NeedRoomCard: LotteryRoomCard,
ImageURL: d.ImageURL,
})
}
sort.Slice(ret, func(i, j int) bool {
if ret[i].StartTs == ret[j].StartTs {
return ret[i].Index < ret[j].Index
}
return ret[i].StartTs < ret[j].StartTs
})
for k, v := range ret {
v.Index = int32(k + 1)
}
return ret
}
// AddCostRoomCard 添加消耗房卡
// snid: 玩家ID
// n: 消耗房卡数量
// cid: 抽奖配置ID
func (l *LotteryMgr) AddCostRoomCard(plt string, snid int32, n int64) {
// 活动总开关
conf := PlatformMgrSingleton.GetConfig(plt).LotteryConfig
if conf == nil || conf.GetOn() != common.On {
return
}
f := func() {
info := PlayerInfoMgrSingle.Players[snid]
if info == nil {
logger.Logger.Errorf("AddCostRoomCard LotteryData snid:%v not found", snid)
return
}
for _, v := range l.GetList(plt) {
if v == nil || v.GetState() != common.LotteryStateRun {
continue
}
if v.GetRemainCode() <= 0 {
continue
}
playerLottery := info.Lottery[v.GetId()]
if playerLottery == nil || playerLottery.StartTs != v.GetStartTs() {
playerLottery = &model.Lottery{
SnId: snid,
CId: v.GetId(),
Code: nil,
StartTs: v.GetStartTs(),
CostCard: 0,
ReCostCard: 0,
}
info.Lottery[v.GetId()] = playerLottery
}
lotteryData := l.GetData(plt, v.GetId())
lotteryData.CostCard += n
playerLottery.CostCard += n
n = int64(int(n) + playerLottery.ReCostCard)
playerLottery.ReCostCard = int(n % LotteryRoomCard)
for i := 0; i < int(n)/LotteryRoomCard; i++ {
code, b := lotteryData.GetCode()
if b {
intCode, _ := strconv.Atoi(code)
playerLottery.Code = append(playerLottery.Code, fmt.Sprintf(lotteryData.Format, intCode))
// 开奖码记录
mq.Write(&model.LotteryCode{
Platform: plt,
SnId: snid,
CId: v.GetId(),
StartTs: v.GetStartTs(),
Code: code,
Index: lotteryData.GetPlayerIndex(),
})
// 机器人发一个
lotteryData.sendRobotCode(1, 1)
}
}
}
}
p := PlayerMgrSington.GetPlayerBySnId(snid)
if p == nil {
PlayerCacheMgrSingleton.Get(plt, snid, func(item *PlayerCacheItem, b bool, b2 bool) {
if item == nil || item.PlayerData == nil {
logger.Logger.Errorf("AddCostRoomCard snid:%v not found", snid)
return
}
f()
}, false)
return
}
f()
}

View File

@ -12,6 +12,7 @@ import (
_ "mongo.games.com/game"
"mongo.games.com/game/common"
"mongo.games.com/game/db"
"mongo.games.com/game/model"
"mongo.games.com/game/mq"
)
@ -29,6 +30,7 @@ func main() {
core.LoadPackages("config.json")
// core hook
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
db.NewGrpcClientConn()
model.StartupRPClient(common.CustomConfig.GetString("MgoRpcCliNet"), common.CustomConfig.GetString("MgoRpcCliAddr"), time.Duration(common.CustomConfig.GetInt("MgoRpcCliReconnInterV"))*time.Second)
mq.StartConsumer(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true)
mq.StartPublisher(common.CustomConfig.GetString("RabbitMQURL"), common.CustomConfig.GetString("RMQExchange"), true, common.CustomConfig.GetInt("RMQPublishBacklog"))

View File

@ -32,6 +32,8 @@ func init() {
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemJyb, Data: &model.JybLog{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBVipGiftLog, Data: &model.DbVip{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.BackSystemFreeGive, Data: &model.SystemFreeGive{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryCode, Data: &model.LotteryCode{}})
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryLog, Data: &model.LotteryLog{}})
}
func init() {
@ -96,4 +98,28 @@ func init() {
return
},
})
// 竞技馆奖励记录
mq.RegisterHandler(&mq.RegisterHandlerParam{
Name: mq.WorldCustomAward,
Data: &model.CustomLogAward{},
Handler: func(data interface{}) (err error) {
log, ok := data.(*model.CustomLogAward)
if !ok {
return
}
core.CoreObject().SendCommand(basic.CommandWrapper(func(o *basic.Object) error {
for _, v := range LotteryMgrInst.GetList(log.Platform) {
if v.GetState() != 2 { // 进行中的活动
continue
}
d := LotteryMgrInst.GetData(log.Platform, v.GetId())
d.CustomAward += log.Price
}
return nil
}), true)
return
},
})
}

View File

@ -23,8 +23,6 @@ const (
func init() {
module.RegisteModule(PlayerCacheMgrSingleton, time.Second, 0)
//GameEventHandlerMgrSingleton.RegisteGameEventHandler(GAMEEVENT_LOGIN, PlayerCacheMgrSingleton)
//GameEventHandlerMgrSingleton.RegisteGameEventHandler(GAMEEVENT_LOGOUT, PlayerCacheMgrSingleton)
}
var PlayerCacheMgrSingleton = &PlayerCacheMgr{

View File

@ -2,9 +2,11 @@ package main
import (
"strconv"
"time"
"mongo.games.com/goserver/core/basic"
"mongo.games.com/goserver/core/logger"
"mongo.games.com/goserver/core/module"
"mongo.games.com/goserver/core/task"
"mongo.games.com/game/common"
@ -18,37 +20,80 @@ import (
func init() {
internal.RegisterPlayerLoad(PlayerInfoMgrSingle)
module.RegisteModule(PlayerInfoMgrSingle, time.Hour, 0)
}
var PlayerInfoMgrSingle = &PlayerInfoMgr{
Players: make(map[int32]*PlayerInfo),
Players: make(map[int32]*PlayerInfo),
PlayerPlatform: make(map[int32]string),
}
type AllPlayerInfo struct {
GameData []*model.PlayerGameData
Lottery []*model.Lottery
}
// PlayerInfo 玩家信息
type PlayerInfo struct {
GameData map[string]*model.PlayerGameData // 游戏数据
Lottery map[int64]*model.Lottery // 抽奖数据 key:抽奖配置id
}
type PlayerInfoMgr struct {
Players map[int32]*PlayerInfo
Players map[int32]*PlayerInfo
PlayerPlatform map[int32]string
}
func (p *PlayerInfoMgr) Load(platform string, snid int32, player any) *internal.PlayerLoadReplay {
func (p *PlayerInfoMgr) ModuleName() string {
return "PlayerInfoMgr"
}
func (p *PlayerInfoMgr) Init() {
}
func (p *PlayerInfoMgr) Update() {
for k, v := range p.PlayerPlatform {
if PlayerMgrSington.GetPlayerBySnId(k) == nil {
p.Save(v, k, true, true)
p.Release(v, k)
}
}
}
func (p *PlayerInfoMgr) Shutdown() {
for k, v := range p.Players {
if v == nil {
continue
}
p.Save(p.PlayerPlatform[k], k, true, true)
p.Release(p.PlayerPlatform[k], k)
}
module.UnregisteModule(p)
}
func (p *PlayerInfoMgr) Load(platform string, snid int32, data any) *internal.PlayerLoadReplay {
if platform != "" && snid > 0 {
p.PlayerPlatform[snid] = platform
}
var err error
allPlayerInfo := &AllPlayerInfo{
GameData: make([]*model.PlayerGameData, 0),
Lottery: make([]*model.Lottery, 0),
}
// 游戏数据
gameData, err := model.GetPlayerGameData(platform, snid)
allPlayerInfo.GameData, err = model.GetPlayerGameData(platform, snid)
if err != nil {
logger.Logger.Errorf("GetPlayerGameData snid:%v error: %v", snid, err)
goto here
}
allPlayerInfo.GameData = gameData
// 抽奖数据
allPlayerInfo.Lottery, err = model.GetLottery(platform, snid, 0, common.GetDayStartTs(time.Now().Unix()))
if err != nil {
logger.Logger.Errorf("GetLottery snid:%v error: %v", snid, err)
goto here
}
// ...
here:
@ -60,34 +105,41 @@ here:
}
}
func (p *PlayerInfoMgr) Callback(player any, ret *internal.PlayerLoadReplay) {
func (p *PlayerInfoMgr) Callback(data any, ret *internal.PlayerLoadReplay) {
if ret.Err != nil {
return
}
data, ok := ret.Data.(*AllPlayerInfo)
playerInfo, ok := ret.Data.(*AllPlayerInfo)
if !ok {
return
}
info := &PlayerInfo{
GameData: make(map[string]*model.PlayerGameData),
Lottery: make(map[int64]*model.Lottery),
}
// 游戏数据
for _, v := range data.GameData {
for _, v := range playerInfo.GameData {
info.GameData[v.Id] = v
}
// 抽奖数据
for _, v := range playerInfo.Lottery {
info.Lottery[v.CId] = v
}
// ...
p.Players[ret.Snid] = info
}
func (p *PlayerInfoMgr) LoadAfter(platform string, snid int32) *internal.PlayerLoadReplay {
if platform != "" && snid > 0 {
p.PlayerPlatform[snid] = platform
}
return nil
}
func (p *PlayerInfoMgr) CallbackAfter(ret *internal.PlayerLoadReplay) {
}
func (p *PlayerInfoMgr) CallbackAfter(ret *internal.PlayerLoadReplay) {}
func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) {
var err error
@ -102,6 +154,11 @@ func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) {
if err != nil {
logger.Logger.Errorf("SavePlayerGameData snid:%v error: %v", snid, err)
}
// 抽奖数据
err = model.UpsertLottery(platform, common.GetMapValues(data.Lottery)...)
if err != nil {
logger.Logger.Errorf("UpsertLottery snid:%v error: %v", snid, err)
}
// ...
}
@ -125,4 +182,5 @@ func (p *PlayerInfoMgr) Save(platform string, snid int32, isSync, force bool) {
func (p *PlayerInfoMgr) Release(platform string, snid int32) {
delete(p.Players, snid)
delete(p.PlayerPlatform, snid)
}

View File

@ -76,6 +76,16 @@ func (spd *ScenePolicyData) OnSceneState(s *Scene, state int) {
spd.CostPayment(s, v.SnId)
}
}
if s.CustomParam.GetCostType() == 2 { // 房主付费
n := 0
cfg := PlatformMgrSingleton.GetConfig(s.platform.IdStr).RoomConfig[s.CustomParam.GetRoomConfigId()]
for _, v := range cfg.GetCost() {
if v != nil && v.GetItemId() == common.ItemIDRoomCard {
n += int(v.GetItemNum())
}
}
LotteryMgrInst.AddCostRoomCard(s.platform.IdStr, s.creator, int64(n))
}
}
case common.SceneStateEnd:
@ -146,7 +156,11 @@ func (spd *ScenePolicyData) CostPayment(s *Scene, snid int32) bool {
return false
}
return spd.costEnough(int(s.CustomParam.GetCostType()), s.playerNum, roomConfig, p.SnId, func(items []*model.Item) {
n := 0
for _, v := range items {
if v.ItemId == common.ItemIDRoomCard {
n += int(v.ItemNum)
}
v.ItemNum = -v.ItemNum
}
BagMgrSingleton.AddItems(&model.AddItemParam{
@ -160,6 +174,7 @@ func (spd *ScenePolicyData) CostPayment(s *Scene, snid int32) bool {
GameFreeId: int64(s.dbGameFree.GetId()),
RoomConfigId: roomConfig.GetId(),
})
LotteryMgrInst.AddCostRoomCard(p.Platform, p.SnId, int64(n))
})
}

Binary file not shown.