解决冲突
This commit is contained in:
commit
21993b08da
|
|
@ -1,7 +1,5 @@
|
||||||
stages:
|
stages:
|
||||||
- lock
|
|
||||||
- build
|
- build
|
||||||
- unlock
|
|
||||||
|
|
||||||
variables:
|
variables:
|
||||||
GOPROXY: "https://goproxy.cn,direct"
|
GOPROXY: "https://goproxy.cn,direct"
|
||||||
|
|
@ -20,19 +18,6 @@ cache:
|
||||||
- ${GOPATH}/pkg/mod
|
- ${GOPATH}/pkg/mod
|
||||||
- ${GOPATH}/bin
|
- ${GOPATH}/bin
|
||||||
|
|
||||||
# 锁定作业,防止并发流水线执行
|
|
||||||
lock_job:
|
|
||||||
stage: lock
|
|
||||||
script:
|
|
||||||
- |
|
|
||||||
if [ -f /tmp/ci_lock_$CI_COMMIT_REF_NAME ]; then
|
|
||||||
echo "流水线($CI_COMMIT_REF_NAME)已在运行,等待..."
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
touch /tmp/ci_lock_$CI_COMMIT_REF_NAME
|
|
||||||
echo "获得锁定,开始流水线($CI_COMMIT_REF_NAME)。"
|
|
||||||
fi
|
|
||||||
|
|
||||||
build-job:
|
build-job:
|
||||||
stage: build
|
stage: build
|
||||||
only:
|
only:
|
||||||
|
|
@ -40,10 +25,12 @@ build-job:
|
||||||
- release
|
- release
|
||||||
script:
|
script:
|
||||||
# 拉取代码
|
# 拉取代码
|
||||||
|
- echo "拉取代码"
|
||||||
- git checkout $CI_COMMIT_REF_NAME
|
- git checkout $CI_COMMIT_REF_NAME
|
||||||
- git pull origin $CI_COMMIT_REF_NAME
|
- git pull origin $CI_COMMIT_REF_NAME
|
||||||
|
|
||||||
# 替换 go.mod 中的 ../goserver
|
# 替换 go.mod 中的 ../goserver
|
||||||
|
- echo "替换 go.mod 中的 ../goserver"
|
||||||
- sed -i "s|mongo.games.com/goserver => .*|mongo.games.com/goserver => $GOPATH/src/$GoServerSrcPath|" go.mod
|
- sed -i "s|mongo.games.com/goserver => .*|mongo.games.com/goserver => $GOPATH/src/$GoServerSrcPath|" go.mod
|
||||||
|
|
||||||
- if [ ! -z "$(git status --porcelain go.mod go.sum)" ]; then
|
- if [ ! -z "$(git status --porcelain go.mod go.sum)" ]; then
|
||||||
|
|
@ -51,7 +38,7 @@ build-job:
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 编译
|
# 编译
|
||||||
- echo '编译'
|
- echo "编译"
|
||||||
- if [ "$GOMODTIDY" == 1 ]; then
|
- if [ "$GOMODTIDY" == 1 ]; then
|
||||||
go mod tidy;
|
go mod tidy;
|
||||||
fi
|
fi
|
||||||
|
|
@ -65,14 +52,14 @@ build-job:
|
||||||
done < ./programs.txt
|
done < ./programs.txt
|
||||||
|
|
||||||
# 拷贝文件
|
# 拷贝文件
|
||||||
- echo '拷贝文件'
|
- echo "拷贝文件"
|
||||||
- rm -rf ./temp
|
- rm -rf ./temp
|
||||||
- mkdir ./temp
|
- mkdir ./temp
|
||||||
- mkdir ./temp/data
|
- mkdir ./temp/data
|
||||||
- cp -rfp ./data/* ./temp/data
|
- cp -rfp ./data/* ./temp/data
|
||||||
|
|
||||||
# 删除自定义配置
|
# 删除自定义配置
|
||||||
- echo '删除自定义配置'
|
- echo "删除自定义配置"
|
||||||
- |
|
- |
|
||||||
while IFS= read -r line || [[ -n $line ]]
|
while IFS= read -r line || [[ -n $line ]]
|
||||||
do
|
do
|
||||||
|
|
@ -81,7 +68,7 @@ build-job:
|
||||||
done < ./exclude.txt
|
done < ./exclude.txt
|
||||||
|
|
||||||
# 拷贝可执行程序
|
# 拷贝可执行程序
|
||||||
- echo '拷贝可执行程序'
|
- echo "拷贝可执行程序"
|
||||||
- |
|
- |
|
||||||
while IFS= read -r line || [[ -n $line ]]
|
while IFS= read -r line || [[ -n $line ]]
|
||||||
do
|
do
|
||||||
|
|
@ -90,6 +77,7 @@ build-job:
|
||||||
done < ./programs.txt
|
done < ./programs.txt
|
||||||
|
|
||||||
# 获取部署环境信息
|
# 获取部署环境信息
|
||||||
|
- echo "获取部署环境信息"
|
||||||
- if [ "$CI_COMMIT_BRANCH" == "develop" ]; then
|
- if [ "$CI_COMMIT_BRANCH" == "develop" ]; then
|
||||||
SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVELOP";
|
SSH_PRIVATE_KEY="$SSH_PRIVATE_KEY_DEVELOP";
|
||||||
REMOTE_HOST="$REMOTE_HOST_DEVELOP";
|
REMOTE_HOST="$REMOTE_HOST_DEVELOP";
|
||||||
|
|
@ -120,12 +108,5 @@ build-job:
|
||||||
- rsync -rvz --delete ./temp/ $REMOTE_USER@$REMOTE_HOST:$BinPath
|
- rsync -rvz --delete ./temp/ $REMOTE_USER@$REMOTE_HOST:$BinPath
|
||||||
|
|
||||||
# 触发部署
|
# 触发部署
|
||||||
|
- echo "触发部署"
|
||||||
- "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline"
|
- "curl -X POST --fail -F token=$SERVER_CI_TOKEN -F ref=release -F variables[ServerName]=$ServerName https://git.pogorockgames.com/api/v4/projects/31/trigger/pipeline"
|
||||||
|
|
||||||
# 解锁作业,释放锁定
|
|
||||||
unlock_job:
|
|
||||||
stage: unlock
|
|
||||||
script:
|
|
||||||
- rm -f /tmp/ci_lock_$CI_COMMIT_REF_NAME
|
|
||||||
- echo "释放锁定,流水线结束(/$CI_COMMIT_REF_NAME)。"
|
|
||||||
when: always
|
|
||||||
|
|
@ -0,0 +1,105 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"mongo.games.com/game/protocol/activity"
|
||||||
|
"mongo.games.com/goserver/core/timer"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
"mongo.games.com/game/proto"
|
||||||
|
loginproto "mongo.games.com/game/protocol/login"
|
||||||
|
playerproto "mongo.games.com/game/protocol/player"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// 心跳
|
||||||
|
netlib.Register(int(loginproto.GatePacketID_PACKET_SC_PONG), loginproto.SCPong{}, SCPong)
|
||||||
|
// 登录
|
||||||
|
netlib.Register(int(loginproto.LoginPacketID_PACKET_SC_LOGIN), loginproto.SCLogin{}, SCLogin)
|
||||||
|
// 玩家信息
|
||||||
|
netlib.Register(int(playerproto.PlayerPacketID_PACKET_SC_PLAYERDATA), playerproto.SCPlayerData{}, SCPlayerData)
|
||||||
|
|
||||||
|
netlib.Register(int(activity.PushCoinPacketID_PACKET_SCPushCoinInfo), activity.SCPushCoinInfo{}, SCPrint)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCPong(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
accountID := s.GetAttribute(SessionAttributeClientAccountId)
|
||||||
|
logger.Logger.Tracef("SCPong username:%v %v", accountID, data)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCLogin(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
logger.Logger.Trace("SCLogin ", data)
|
||||||
|
|
||||||
|
msg, ok := data.(*loginproto.SCLogin)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if msg.GetOpRetCode() != loginproto.OpResultCode_OPRC_Sucess {
|
||||||
|
accountID := s.GetAttribute(SessionAttributeClientAccountId)
|
||||||
|
logger.Logger.Error("登录失败 ", accountID)
|
||||||
|
s.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
csPlayerData := &playerproto.CSPlayerData{
|
||||||
|
AccId: msg.GetAccId(),
|
||||||
|
}
|
||||||
|
pp := &model.PlayerParams{
|
||||||
|
Platform: 1,
|
||||||
|
Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)),
|
||||||
|
City: "北京",
|
||||||
|
Logininmodel: "app",
|
||||||
|
}
|
||||||
|
d, err := json.Marshal(pp)
|
||||||
|
if err == nil {
|
||||||
|
csPlayerData.Params = proto.String(string(d))
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PLAYERDATA), csPlayerData)
|
||||||
|
logger.Logger.Info("登录成功 ", msg.GetAccId())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCPlayerData(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
logger.Logger.Trace("SCPlayerData ", data)
|
||||||
|
msg, ok := data.(*playerproto.SCPlayerData)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if msg.GetOpRetCode() != playerproto.OpResultCode_OPRC_Sucess {
|
||||||
|
accountID := s.GetAttribute(SessionAttributeClientAccountId)
|
||||||
|
logger.Logger.Errorf("获取玩家信息失败 %v", accountID)
|
||||||
|
s.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
s.SetAttribute(SessionAttributeUser, msg)
|
||||||
|
|
||||||
|
StartSessionPingTimer(s, timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
|
||||||
|
if !s.IsConned() {
|
||||||
|
StopSessionPingTimer(s)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
pack := &loginproto.CSPing{}
|
||||||
|
s.Send(int(loginproto.GatePacketID_PACKET_CS_PING), pack)
|
||||||
|
return true
|
||||||
|
}), nil, time.Second*time.Duration(60+rand.Int31n(100)), -1)
|
||||||
|
|
||||||
|
s.Send(int(activity.PushCoinPacketID_PACKET_CSPushCoinInfo), &activity.CSPushCoinInfo{})
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCPrint(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
logger.Logger.Info("SCPrint ", data)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/goserver/core"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Config = &Configuration{}
|
||||||
|
|
||||||
|
type Configuration struct {
|
||||||
|
Count int // 机器人总数
|
||||||
|
AppId string // appID
|
||||||
|
Connects netlib.SessionConfig // 网络连接配置
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Configuration) Name() string {
|
||||||
|
return "benchmark"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Configuration) Init() error {
|
||||||
|
logger.Logger.Tracef("%+v", *this)
|
||||||
|
if this.Count == 0 {
|
||||||
|
this.Count = 20
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Configuration) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.RegistePackage(Config)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,67 @@
|
||||||
|
netlib:
|
||||||
|
SrvInfo:
|
||||||
|
Name: BenchmarkServer
|
||||||
|
Type: 9
|
||||||
|
Id: 902
|
||||||
|
AreaID: 1
|
||||||
|
Banner:
|
||||||
|
- =================
|
||||||
|
- benchmark server
|
||||||
|
- =================
|
||||||
|
IoServices: []
|
||||||
|
module:
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 100
|
||||||
|
executor:
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 0
|
||||||
|
Worker:
|
||||||
|
WorkerCnt: 8
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 0
|
||||||
|
timer:
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 100
|
||||||
|
signal:
|
||||||
|
SupportSignal: true
|
||||||
|
cmdline:
|
||||||
|
SupportCmdline: true
|
||||||
|
benchmark:
|
||||||
|
Count: 1
|
||||||
|
AppId: 5c56d1644966f078bfb90c71
|
||||||
|
Connects:
|
||||||
|
Id: 402
|
||||||
|
Type: 4
|
||||||
|
AreaId: 1
|
||||||
|
Name: ClientService
|
||||||
|
Ip: 127.0.0.1
|
||||||
|
Port: 11001
|
||||||
|
Protocol: tcp
|
||||||
|
Path: /
|
||||||
|
MaxDone: 200
|
||||||
|
MaxPend: 200
|
||||||
|
MaxPacket: 65535
|
||||||
|
MaxConn: 2000
|
||||||
|
RcvBuff: 4096
|
||||||
|
SndBuff: 4096
|
||||||
|
WriteTimeout: 3600
|
||||||
|
ReadTimeout: 3600
|
||||||
|
SoLinger: 10
|
||||||
|
IsInnerLink: true
|
||||||
|
NoDelay: true
|
||||||
|
SupportFragment: true
|
||||||
|
AuthKey: www.jxjy.games.cn
|
||||||
|
IsClient: true
|
||||||
|
AllowMultiConn: true
|
||||||
|
FilterChain:
|
||||||
|
- session-filter-auth
|
||||||
|
HandlerChain:
|
||||||
|
- handler-gate-session
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/module"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// RobotSessionStartId 机器人session开始id
|
||||||
|
RobotSessionStartId = 100000000
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
BenchMarkModule = &BenchMark{}
|
||||||
|
WaitConnectSessions []*netlib.SessionConfig
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewSession 新建session
|
||||||
|
// id 连接id, 默认自动分配
|
||||||
|
func NewSession(id ...int) {
|
||||||
|
cfg := Config.Connects
|
||||||
|
if len(id) > 0 && id[0] > 0 {
|
||||||
|
cfg.Id = id[0]
|
||||||
|
} else {
|
||||||
|
BenchMarkModule.idx++
|
||||||
|
cfg.Id = BenchMarkModule.idx
|
||||||
|
}
|
||||||
|
cfg.Init()
|
||||||
|
logger.Logger.Info("waite connect session id=", cfg.Id)
|
||||||
|
WaitConnectSessions = append(WaitConnectSessions, &cfg)
|
||||||
|
}
|
||||||
|
|
||||||
|
type BenchMark struct {
|
||||||
|
idx int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BenchMark) ModuleName() string {
|
||||||
|
return "benchmark-module"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BenchMark) Init() {
|
||||||
|
m.idx = RobotSessionStartId
|
||||||
|
for i := 0; i < Config.Count; i++ {
|
||||||
|
NewSession()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update 机器开始连接游戏服务器
|
||||||
|
func (m *BenchMark) Update() {
|
||||||
|
n := len(WaitConnectSessions)
|
||||||
|
if n > 0 {
|
||||||
|
config := WaitConnectSessions[n-1]
|
||||||
|
WaitConnectSessions = WaitConnectSessions[:n-1]
|
||||||
|
if err := netlib.Connect(config); err != nil {
|
||||||
|
logger.Logger.Error("netlib.Connect error", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BenchMark) Shutdown() {
|
||||||
|
module.UnregisteModule(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
module.RegisteModule(BenchMarkModule, time.Millisecond, 1)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
"mongo.games.com/goserver/core/timer"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SessionAttributeClientAccountId int = iota // 账号
|
||||||
|
SessionAttributeUser
|
||||||
|
SessionAttributePingTimer
|
||||||
|
)
|
||||||
|
|
||||||
|
func StartSessionPingTimer(s *netlib.Session, act timer.TimerAction, ud interface{}, interval time.Duration, times int) bool {
|
||||||
|
StopSessionPingTimer(s)
|
||||||
|
if hTimer, ok := timer.StartTimer(act, ud, interval, times); ok {
|
||||||
|
s.SetAttribute(SessionAttributePingTimer, hTimer)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func StopSessionPingTimer(s *netlib.Session) {
|
||||||
|
if h, ok := s.GetAttribute(SessionAttributePingTimer).(timer.TimerHandle); ok {
|
||||||
|
if h != timer.TimerHandle(0) {
|
||||||
|
timer.StopTimer(h)
|
||||||
|
s.RemoveAttribute(SessionAttributePingTimer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/md5"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"math/rand"
|
||||||
|
"mongo.games.com/game/common"
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
loginproto "mongo.games.com/game/protocol/login"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
"strconv"
|
||||||
|
"sync/atomic"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
添加到客户端管理器,管理器负责登录
|
||||||
|
当连接断开时,从管理器中移除,判断是否需要重连
|
||||||
|
*/
|
||||||
|
|
||||||
|
const (
|
||||||
|
GateSessionHandlerName = "handler-gate-session"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GateSessionHandler struct {
|
||||||
|
netlib.BasicSessionHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) GetName() string {
|
||||||
|
return GateSessionHandlerName
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) GetInterestOps() uint {
|
||||||
|
return 1<<netlib.InterestOps_Opened |
|
||||||
|
1<<netlib.InterestOps_Closed
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) OnSessionOpened(s *netlib.Session) {
|
||||||
|
// 登录账号
|
||||||
|
StartLogin(s)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) OnSessionClosed(s *netlib.Session) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
netlib.RegisteSessionHandlerCreator(GateSessionHandlerName, func() netlib.SessionHandler {
|
||||||
|
return &GateSessionHandler{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var UserNameIndex int64
|
||||||
|
|
||||||
|
func StartLogin(s *netlib.Session) {
|
||||||
|
ts := time.Now().UnixNano()
|
||||||
|
username := fmt.Sprintf("benchmark-%v", atomic.AddInt64(&UserNameIndex, 1))
|
||||||
|
s.SetAttribute(SessionAttributeClientAccountId, username)
|
||||||
|
csLogin := &loginproto.CSLogin{
|
||||||
|
Username: username,
|
||||||
|
TimeStamp: ts,
|
||||||
|
Platform: "1",
|
||||||
|
Channel: "",
|
||||||
|
PlatformTag: "test.win88.yy_android",
|
||||||
|
}
|
||||||
|
|
||||||
|
params := &model.PlayerParams{
|
||||||
|
Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)),
|
||||||
|
City: "北京",
|
||||||
|
Platform: 1,
|
||||||
|
Logininmodel: "app",
|
||||||
|
}
|
||||||
|
data, err := json.Marshal(params)
|
||||||
|
if err == nil {
|
||||||
|
csLogin.Params = string(data[:])
|
||||||
|
}
|
||||||
|
|
||||||
|
h := md5.New()
|
||||||
|
io.WriteString(h, fmt.Sprintf("%v%v", username, Config.AppId))
|
||||||
|
pwd := hex.EncodeToString(h.Sum(nil))
|
||||||
|
h.Reset()
|
||||||
|
io.WriteString(h, fmt.Sprintf("%v%v%v", pwd, Config.AppId, ts))
|
||||||
|
pwd = hex.EncodeToString(h.Sum(nil))
|
||||||
|
csLogin.Password = pwd
|
||||||
|
|
||||||
|
csLogin.LoginType = 0
|
||||||
|
csLogin.Sign = common.MakeMd5String(csLogin.GetUsername(), csLogin.GetPassword(),
|
||||||
|
strconv.Itoa(int(csLogin.GetTimeStamp())), csLogin.GetParams(), Config.AppId)
|
||||||
|
|
||||||
|
s.Send(int(loginproto.LoginPacketID_PACKET_CS_LOGIN), csLogin)
|
||||||
|
logger.Logger.Infof("账号 [%v] 开始登录", username)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<seelog type="adaptive" mininterval="2000000" maxinterval="100000000" critmsgcount="500" minlevel="trace">
|
||||||
|
<exceptions>
|
||||||
|
<exception filepattern="test*" minlevel="error"/>
|
||||||
|
</exceptions>
|
||||||
|
<outputs formatid="all">
|
||||||
|
<rollingfile formatid="all" type="size" filename="./all.log" maxsize="50000000" maxrolls="5" />
|
||||||
|
<filter levels="info,trace,warn,error">
|
||||||
|
<console formatid="fmtinfo"/>
|
||||||
|
</filter>
|
||||||
|
<filter levels="error,critical" formatid="fmterror">
|
||||||
|
<console/>
|
||||||
|
<file path="errors.log"/>
|
||||||
|
</filter>
|
||||||
|
</outputs>
|
||||||
|
<formats>
|
||||||
|
<format id="fmtinfo" format="[%Date][%Time] [%Level] %Msg%n"/>
|
||||||
|
<format id="fmterror" format="[%Date][%Time] [%LEVEL] [%FuncShort @ %File.%Line] %Msg%n"/>
|
||||||
|
<format id="all" format="[%Date][%Time] [%Level] [@ %File.%Line] %Msg%n"/>
|
||||||
|
<format id="criticalemail" format="Critical error on our server!\n %Time %Date %RelFile %Func %Msg \nSent by Seelog"/>
|
||||||
|
</formats>
|
||||||
|
</seelog>
|
||||||
|
|
@ -0,0 +1,24 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "mongo.games.com/game"
|
||||||
|
"mongo.games.com/goserver/core"
|
||||||
|
"mongo.games.com/goserver/core/module"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
defer core.ClosePackages()
|
||||||
|
core.LoadPackages("config.yaml")
|
||||||
|
// core hook
|
||||||
|
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
core.RegisteHook(core.HOOK_AFTER_STOP, func() error {
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
// module模块
|
||||||
|
waiter := module.Start()
|
||||||
|
waiter.Wait("main()")
|
||||||
|
}
|
||||||
|
|
@ -99,6 +99,7 @@ const (
|
||||||
GameId_AngerUncle = 606 // 愤怒大叔
|
GameId_AngerUncle = 606 // 愤怒大叔
|
||||||
GameId_SmallRoket = 607 // 小火箭
|
GameId_SmallRoket = 607 // 小火箭
|
||||||
GameId_Clawdoll = 608 // 娃娃机
|
GameId_Clawdoll = 608 // 娃娃机
|
||||||
|
GameId_PushCoin = 609 // 推币机
|
||||||
__GameId_ThrGame_Min__ = 700 //################三方类################
|
__GameId_ThrGame_Min__ = 700 //################三方类################
|
||||||
GameId_Thr_Dg = 701 //DG Game
|
GameId_Thr_Dg = 701 //DG Game
|
||||||
GameId_Thr_XHJ = 901 ///DG Game
|
GameId_Thr_XHJ = 901 ///DG Game
|
||||||
|
|
@ -118,6 +119,7 @@ const (
|
||||||
GameDifFruits = "306" // 水果机
|
GameDifFruits = "306" // 水果机
|
||||||
GameDifRichblessed = "307" // 多彩多福
|
GameDifRichblessed = "307" // 多彩多福
|
||||||
GameDifClawdoll = "608" // 娃娃机
|
GameDifClawdoll = "608" // 娃娃机
|
||||||
|
GameDifPushCoin = "609" // 推币机
|
||||||
)
|
)
|
||||||
|
|
||||||
// IsTienLenYuLe TienLen娱乐
|
// IsTienLenYuLe TienLen娱乐
|
||||||
|
|
@ -328,6 +330,25 @@ const (
|
||||||
GainWayGuide2 = 117 // 竞技馆引导奖励
|
GainWayGuide2 = 117 // 竞技馆引导奖励
|
||||||
GainWayCompound = 118 // 道具合成消耗
|
GainWayCompound = 118 // 道具合成消耗
|
||||||
GainWayCompoundGain = 119 // 道具合成获得
|
GainWayCompoundGain = 119 // 道具合成获得
|
||||||
|
GainWayItem_PigBankTakeCoin = 120 // 购买金币存钱罐奖励道具
|
||||||
|
GainWayItem_PigBankTakeDiamond = 121 // 购买钻石存钱罐奖励道具
|
||||||
|
GainWayNianCost = 122 //年兽活动消耗
|
||||||
|
GainWayNianGain_Attack_LittleGuarantee = 123 //年兽活动小爆竹攻击年兽获得保底奖励
|
||||||
|
GainWayRedPacket = 124 // 红包奖励
|
||||||
|
GainWayNianGain_Sign = 125 //年兽活动签到获得
|
||||||
|
GainWayNianGain_Change = 126 //年兽活动兑换获得
|
||||||
|
GainWayNianGain_BossDie = 127 //年兽活动Boss死亡获得
|
||||||
|
GainWayNianGain_BossDieOther = 128 //年兽活动Boss死亡额外获得
|
||||||
|
GainWayNianGain_Attack_BigOther = 129 //年兽活动大爆竹攻击年兽获得额外奖励
|
||||||
|
GainWayNianGain_Attack_BigGuarantee = 130 //年兽活动大爆竹攻击年兽获得保底奖励
|
||||||
|
GainWayNianGain_Attack_Coin = 131 //攻击年兽获得金币奖励
|
||||||
|
GainWayNianGain_EveryDayTask = 132 //年兽活动每日任务
|
||||||
|
GainWayNianGain_Task = 133 //年兽活动任务
|
||||||
|
GainWayConsume = 134 //累消活动获得
|
||||||
|
GainWayPushCoinExchangeCost = 135 // 推币机兑换消耗
|
||||||
|
GainWatPushCoinExchangeGain = 136 // 推币机兑换获得
|
||||||
|
GainWayPushCoinGain = 137 // 推币机掉落获得
|
||||||
|
GainWayPushCoinCost = 138 // 推币机消耗
|
||||||
)
|
)
|
||||||
|
|
||||||
// 后台选择 金币变化类型 的充值 类型id号起始
|
// 后台选择 金币变化类型 的充值 类型id号起始
|
||||||
|
|
@ -581,6 +602,14 @@ const (
|
||||||
ItemIDClawdoll = 40003 // 娃娃卡
|
ItemIDClawdoll = 40003 // 娃娃卡
|
||||||
ItemDollCard = 40004 // 娃娃卡积分
|
ItemDollCard = 40004 // 娃娃卡积分
|
||||||
ItemIDRoomCard = 40002 // 房卡
|
ItemIDRoomCard = 40002 // 房卡
|
||||||
|
ItemIDLittleGuaranteed = 50014 //小爆竹
|
||||||
|
ItemIDBigGuaranteed = 50015 //大爆竹
|
||||||
|
ItemIDPlum = 50016 //梅花(推币机)
|
||||||
|
ItemIDBigCoin = 50017 //大金币
|
||||||
|
ItemIDCoin1 = 50018 //金币1
|
||||||
|
ItemIDCoin2 = 50019 //金币2
|
||||||
|
ItemIDCoin3 = 50020 //金币3
|
||||||
|
ItemIDShake = 50021 //震动效果
|
||||||
)
|
)
|
||||||
|
|
||||||
func ToItemId(id int32) int32 {
|
func ToItemId(id int32) int32 {
|
||||||
|
|
@ -692,6 +721,10 @@ const (
|
||||||
TaskTypeTienlenWinCoin = 29 // Tienlen赢取金币数量
|
TaskTypeTienlenWinCoin = 29 // Tienlen赢取金币数量
|
||||||
TaskTypeRankMatchWinTimes = 30 // 排位胜利次数
|
TaskTypeRankMatchWinTimes = 30 // 排位胜利次数
|
||||||
TaskTypeBuyPermit = 31 // 购买典藏通行证
|
TaskTypeBuyPermit = 31 // 购买典藏通行证
|
||||||
|
TaskTypeBuyRedBag = 32 // 参与红包雨活动
|
||||||
|
TaskTypeNianBossKill = 33 // 击杀年兽
|
||||||
|
TaskTypeNianBossDamage = 34 // 年兽造成伤害
|
||||||
|
TaskTypeNianSign = 35 // 年兽签到
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -709,6 +742,9 @@ const (
|
||||||
TaskActivityTypeAchieve = 5 // 成就任务
|
TaskActivityTypeAchieve = 5 // 成就任务
|
||||||
TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务
|
TaskActivityTypePermitEveryDay = 6 // 赛季通行证每日任务
|
||||||
TaskActivityTypePermit = 7 // 赛季通行证任务
|
TaskActivityTypePermit = 7 // 赛季通行证任务
|
||||||
|
TaskActivityTypeNianEveryDay = 8 // 年兽每日任务
|
||||||
|
TaskActivityTypeNian = 9 // 活动期间年兽任务
|
||||||
|
TaskActivityTypeConsume = 10 // 累计消耗活动任务
|
||||||
)
|
)
|
||||||
|
|
||||||
const HeadRange = 3 // 机器人头像id范围
|
const HeadRange = 3 // 机器人头像id范围
|
||||||
|
|
@ -777,6 +813,10 @@ const (
|
||||||
ChannelSwitchInvite = 3 // 邀请开关
|
ChannelSwitchInvite = 3 // 邀请开关
|
||||||
ChannelSwitchPermit = 4 // 典藏通行证开关
|
ChannelSwitchPermit = 4 // 典藏通行证开关
|
||||||
ChannelSwitchDiamondLottery = 5 // 钻石抽奖开关
|
ChannelSwitchDiamondLottery = 5 // 钻石抽奖开关
|
||||||
|
ChannelSwitchItemRecExpire = 8 // 记牌器开关
|
||||||
|
ChannelSwitchPigBankCoin = 13 // 金币存钱罐开关
|
||||||
|
ChannelSwitchPigBankDiamond = 14 // 钻石存钱罐开关
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// 特殊商品id
|
// 特殊商品id
|
||||||
|
|
|
||||||
|
|
@ -127,3 +127,11 @@ func TestInSameWeek(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestStrTimeToTime(t *testing.T) {
|
||||||
|
t1 := StrRFC3339TimeToTime("2016-05-17 15:12:15")
|
||||||
|
if t1.IsZero() {
|
||||||
|
t.Fatal("StrTimeToTime(2016-05-17 15:12:15) expect result is not zero")
|
||||||
|
}
|
||||||
|
t.Log(t1)
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,277 @@
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
// The following code is automatically generated by the mongo-dao-generator tool.
|
||||||
|
// Please do not modify this code manually to avoid being overwritten in the next generation.
|
||||||
|
// For more tool details, please click the link to view https://github.com/dobyte/mongo-dao-generator
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
modelpkg "mongo.games.com/game/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RedPacketFilterFunc func(cols *RedPacketColumns) interface{}
|
||||||
|
type RedPacketUpdateFunc func(cols *RedPacketColumns) interface{}
|
||||||
|
type RedPacketPipelineFunc func(cols *RedPacketColumns) interface{}
|
||||||
|
type RedPacketCountOptionsFunc func(cols *RedPacketColumns) *options.CountOptions
|
||||||
|
type RedPacketAggregateOptionsFunc func(cols *RedPacketColumns) *options.AggregateOptions
|
||||||
|
type RedPacketFindOneOptionsFunc func(cols *RedPacketColumns) *options.FindOneOptions
|
||||||
|
type RedPacketFindManyOptionsFunc func(cols *RedPacketColumns) *options.FindOptions
|
||||||
|
type RedPacketUpdateOptionsFunc func(cols *RedPacketColumns) *options.UpdateOptions
|
||||||
|
type RedPacketDeleteOptionsFunc func(cols *RedPacketColumns) *options.DeleteOptions
|
||||||
|
type RedPacketInsertOneOptionsFunc func(cols *RedPacketColumns) *options.InsertOneOptions
|
||||||
|
type RedPacketInsertManyOptionsFunc func(cols *RedPacketColumns) *options.InsertManyOptions
|
||||||
|
|
||||||
|
type RedPacket struct {
|
||||||
|
Columns *RedPacketColumns
|
||||||
|
Database *mongo.Database
|
||||||
|
Collection *mongo.Collection
|
||||||
|
}
|
||||||
|
|
||||||
|
type RedPacketColumns struct {
|
||||||
|
ID string
|
||||||
|
Cid string // 红包活动id
|
||||||
|
Use string // 已发红包 红包奖励数量:已发个数
|
||||||
|
Ts string // 更新时间戳
|
||||||
|
}
|
||||||
|
|
||||||
|
var redPacketColumns = &RedPacketColumns{
|
||||||
|
ID: "_id",
|
||||||
|
Cid: "cid", // 红包活动id
|
||||||
|
Use: "use", // 已发红包 红包奖励数量:已发个数
|
||||||
|
Ts: "ts", // 更新时间戳
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRedPacket() *RedPacket {
|
||||||
|
return &RedPacket{
|
||||||
|
Columns: redPacketColumns,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count returns the number of documents in the collection.
|
||||||
|
func (dao *RedPacket) Count(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketCountOptionsFunc) (int64, error) {
|
||||||
|
var (
|
||||||
|
opts *options.CountOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.CountDocuments(ctx, filter, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggregate executes an aggregate command against the collection and returns a cursor over the resulting documents.
|
||||||
|
func (dao *RedPacket) Aggregate(ctx context.Context, pipelineFunc RedPacketPipelineFunc, optionsFunc ...RedPacketAggregateOptionsFunc) (*mongo.Cursor, error) {
|
||||||
|
var (
|
||||||
|
opts *options.AggregateOptions
|
||||||
|
pipeline = pipelineFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.Aggregate(ctx, pipeline, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertOne executes an insert command to insert a single document into the collection.
|
||||||
|
func (dao *RedPacket) InsertOne(ctx context.Context, model *modelpkg.RedPacket, optionsFunc ...RedPacketInsertOneOptionsFunc) (*mongo.InsertOneResult, error) {
|
||||||
|
if model == nil {
|
||||||
|
return nil, errors.New("model is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := dao.autofill(ctx, model); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts *options.InsertOneOptions
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.InsertOne(ctx, model, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertMany executes an insert command to insert multiple documents into the collection.
|
||||||
|
func (dao *RedPacket) InsertMany(ctx context.Context, models []*modelpkg.RedPacket, optionsFunc ...RedPacketInsertManyOptionsFunc) (*mongo.InsertManyResult, error) {
|
||||||
|
if len(models) == 0 {
|
||||||
|
return nil, errors.New("models is empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
documents := make([]interface{}, 0, len(models))
|
||||||
|
for i := range models {
|
||||||
|
model := models[i]
|
||||||
|
if err := dao.autofill(ctx, model); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
documents = append(documents, model)
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts *options.InsertManyOptions
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.InsertMany(ctx, documents, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateOne executes an update command to update at most one document in the collection.
|
||||||
|
func (dao *RedPacket) UpdateOne(ctx context.Context, filterFunc RedPacketFilterFunc, updateFunc RedPacketUpdateFunc, optionsFunc ...RedPacketUpdateOptionsFunc) (*mongo.UpdateResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.UpdateOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
update = updateFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.UpdateOne(ctx, filter, update, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateOneByID executes an update command to update at most one document in the collection.
|
||||||
|
func (dao *RedPacket) UpdateOneByID(ctx context.Context, id string, updateFunc RedPacketUpdateFunc, optionsFunc ...RedPacketUpdateOptionsFunc) (*mongo.UpdateResult, error) {
|
||||||
|
objectID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.UpdateOne(ctx, func(cols *RedPacketColumns) interface{} {
|
||||||
|
return bson.M{"_id": objectID}
|
||||||
|
}, updateFunc, optionsFunc...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMany executes an update command to update documents in the collection.
|
||||||
|
func (dao *RedPacket) UpdateMany(ctx context.Context, filterFunc RedPacketFilterFunc, updateFunc RedPacketUpdateFunc, optionsFunc ...RedPacketUpdateOptionsFunc) (*mongo.UpdateResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.UpdateOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
update = updateFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.UpdateMany(ctx, filter, update, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindOne executes a find command and returns a model for one document in the collection.
|
||||||
|
func (dao *RedPacket) FindOne(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketFindOneOptionsFunc) (*modelpkg.RedPacket, error) {
|
||||||
|
var (
|
||||||
|
opts *options.FindOneOptions
|
||||||
|
model = &modelpkg.RedPacket{}
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := dao.Collection.FindOne(ctx, filter, opts).Decode(model)
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return model, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindOneByID executes a find command and returns a model for one document in the collection.
|
||||||
|
func (dao *RedPacket) FindOneByID(ctx context.Context, id string, optionsFunc ...RedPacketFindOneOptionsFunc) (*modelpkg.RedPacket, error) {
|
||||||
|
objectID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.FindOne(ctx, func(cols *RedPacketColumns) interface{} {
|
||||||
|
return bson.M{"_id": objectID}
|
||||||
|
}, optionsFunc...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindMany executes a find command and returns many models the matching documents in the collection.
|
||||||
|
func (dao *RedPacket) FindMany(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketFindManyOptionsFunc) ([]*modelpkg.RedPacket, error) {
|
||||||
|
var (
|
||||||
|
opts *options.FindOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
cur, err := dao.Collection.Find(ctx, filter, opts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
models := make([]*modelpkg.RedPacket, 0)
|
||||||
|
|
||||||
|
if err = cur.All(ctx, &models); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return models, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteOne executes a delete command to delete at most one document from the collection.
|
||||||
|
func (dao *RedPacket) DeleteOne(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketDeleteOptionsFunc) (*mongo.DeleteResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.DeleteOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.DeleteOne(ctx, filter, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteOneByID executes a delete command to delete at most one document from the collection.
|
||||||
|
func (dao *RedPacket) DeleteOneByID(ctx context.Context, id string, optionsFunc ...RedPacketDeleteOptionsFunc) (*mongo.DeleteResult, error) {
|
||||||
|
objectID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.DeleteOne(ctx, func(cols *RedPacketColumns) interface{} {
|
||||||
|
return bson.M{"_id": objectID}
|
||||||
|
}, optionsFunc...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMany executes a delete command to delete documents from the collection.
|
||||||
|
func (dao *RedPacket) DeleteMany(ctx context.Context, filterFunc RedPacketFilterFunc, optionsFunc ...RedPacketDeleteOptionsFunc) (*mongo.DeleteResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.DeleteOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.DeleteMany(ctx, filter, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// autofill when inserting data
|
||||||
|
func (dao *RedPacket) autofill(ctx context.Context, model *modelpkg.RedPacket) error {
|
||||||
|
if model.ID.IsZero() {
|
||||||
|
model.ID = primitive.NewObjectID()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,283 @@
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
// The following code is automatically generated by the mongo-dao-generator tool.
|
||||||
|
// Please do not modify this code manually to avoid being overwritten in the next generation.
|
||||||
|
// For more tool details, please click the link to view https://github.com/dobyte/mongo-dao-generator
|
||||||
|
// --------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
modelpkg "mongo.games.com/game/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
type RedPacketHistoryFilterFunc func(cols *RedPacketHistoryColumns) interface{}
|
||||||
|
type RedPacketHistoryUpdateFunc func(cols *RedPacketHistoryColumns) interface{}
|
||||||
|
type RedPacketHistoryPipelineFunc func(cols *RedPacketHistoryColumns) interface{}
|
||||||
|
type RedPacketHistoryCountOptionsFunc func(cols *RedPacketHistoryColumns) *options.CountOptions
|
||||||
|
type RedPacketHistoryAggregateOptionsFunc func(cols *RedPacketHistoryColumns) *options.AggregateOptions
|
||||||
|
type RedPacketHistoryFindOneOptionsFunc func(cols *RedPacketHistoryColumns) *options.FindOneOptions
|
||||||
|
type RedPacketHistoryFindManyOptionsFunc func(cols *RedPacketHistoryColumns) *options.FindOptions
|
||||||
|
type RedPacketHistoryUpdateOptionsFunc func(cols *RedPacketHistoryColumns) *options.UpdateOptions
|
||||||
|
type RedPacketHistoryDeleteOptionsFunc func(cols *RedPacketHistoryColumns) *options.DeleteOptions
|
||||||
|
type RedPacketHistoryInsertOneOptionsFunc func(cols *RedPacketHistoryColumns) *options.InsertOneOptions
|
||||||
|
type RedPacketHistoryInsertManyOptionsFunc func(cols *RedPacketHistoryColumns) *options.InsertManyOptions
|
||||||
|
|
||||||
|
type RedPacketHistory struct {
|
||||||
|
Columns *RedPacketHistoryColumns
|
||||||
|
Database *mongo.Database
|
||||||
|
Collection *mongo.Collection
|
||||||
|
}
|
||||||
|
|
||||||
|
type RedPacketHistoryColumns struct {
|
||||||
|
Platform string // 平台
|
||||||
|
ID string
|
||||||
|
Cid string // 红包活动id
|
||||||
|
Snid string // 玩家id
|
||||||
|
Ts string // 时间戳
|
||||||
|
ItemId string // 道具id
|
||||||
|
ItemNum string // 道具数量
|
||||||
|
}
|
||||||
|
|
||||||
|
var redPacketHistoryColumns = &RedPacketHistoryColumns{
|
||||||
|
Platform: "-", // 平台
|
||||||
|
ID: "_id",
|
||||||
|
Cid: "cid", // 红包活动id
|
||||||
|
Snid: "snid", // 玩家id
|
||||||
|
Ts: "ts", // 时间戳
|
||||||
|
ItemId: "itemid", // 道具id
|
||||||
|
ItemNum: "itemnum",// 道具数量
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRedPacketHistory() *RedPacketHistory {
|
||||||
|
return &RedPacketHistory{
|
||||||
|
Columns: redPacketHistoryColumns,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count returns the number of documents in the collection.
|
||||||
|
func (dao *RedPacketHistory) Count(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryCountOptionsFunc) (int64, error) {
|
||||||
|
var (
|
||||||
|
opts *options.CountOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.CountDocuments(ctx, filter, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Aggregate executes an aggregate command against the collection and returns a cursor over the resulting documents.
|
||||||
|
func (dao *RedPacketHistory) Aggregate(ctx context.Context, pipelineFunc RedPacketHistoryPipelineFunc, optionsFunc ...RedPacketHistoryAggregateOptionsFunc) (*mongo.Cursor, error) {
|
||||||
|
var (
|
||||||
|
opts *options.AggregateOptions
|
||||||
|
pipeline = pipelineFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.Aggregate(ctx, pipeline, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertOne executes an insert command to insert a single document into the collection.
|
||||||
|
func (dao *RedPacketHistory) InsertOne(ctx context.Context, model *modelpkg.RedPacketHistory, optionsFunc ...RedPacketHistoryInsertOneOptionsFunc) (*mongo.InsertOneResult, error) {
|
||||||
|
if model == nil {
|
||||||
|
return nil, errors.New("model is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := dao.autofill(ctx, model); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts *options.InsertOneOptions
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.InsertOne(ctx, model, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InsertMany executes an insert command to insert multiple documents into the collection.
|
||||||
|
func (dao *RedPacketHistory) InsertMany(ctx context.Context, models []*modelpkg.RedPacketHistory, optionsFunc ...RedPacketHistoryInsertManyOptionsFunc) (*mongo.InsertManyResult, error) {
|
||||||
|
if len(models) == 0 {
|
||||||
|
return nil, errors.New("models is empty")
|
||||||
|
}
|
||||||
|
|
||||||
|
documents := make([]interface{}, 0, len(models))
|
||||||
|
for i := range models {
|
||||||
|
model := models[i]
|
||||||
|
if err := dao.autofill(ctx, model); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
documents = append(documents, model)
|
||||||
|
}
|
||||||
|
|
||||||
|
var opts *options.InsertManyOptions
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.InsertMany(ctx, documents, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateOne executes an update command to update at most one document in the collection.
|
||||||
|
func (dao *RedPacketHistory) UpdateOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.UpdateOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
update = updateFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.UpdateOne(ctx, filter, update, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateOneByID executes an update command to update at most one document in the collection.
|
||||||
|
func (dao *RedPacketHistory) UpdateOneByID(ctx context.Context, id string, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) {
|
||||||
|
objectID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.UpdateOne(ctx, func(cols *RedPacketHistoryColumns) interface{} {
|
||||||
|
return bson.M{"_id": objectID}
|
||||||
|
}, updateFunc, optionsFunc...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// UpdateMany executes an update command to update documents in the collection.
|
||||||
|
func (dao *RedPacketHistory) UpdateMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, updateFunc RedPacketHistoryUpdateFunc, optionsFunc ...RedPacketHistoryUpdateOptionsFunc) (*mongo.UpdateResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.UpdateOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
update = updateFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.UpdateMany(ctx, filter, update, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindOne executes a find command and returns a model for one document in the collection.
|
||||||
|
func (dao *RedPacketHistory) FindOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryFindOneOptionsFunc) (*modelpkg.RedPacketHistory, error) {
|
||||||
|
var (
|
||||||
|
opts *options.FindOneOptions
|
||||||
|
model = &modelpkg.RedPacketHistory{}
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := dao.Collection.FindOne(ctx, filter, opts).Decode(model)
|
||||||
|
if err != nil {
|
||||||
|
if err == mongo.ErrNoDocuments {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return model, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindOneByID executes a find command and returns a model for one document in the collection.
|
||||||
|
func (dao *RedPacketHistory) FindOneByID(ctx context.Context, id string, optionsFunc ...RedPacketHistoryFindOneOptionsFunc) (*modelpkg.RedPacketHistory, error) {
|
||||||
|
objectID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.FindOne(ctx, func(cols *RedPacketHistoryColumns) interface{} {
|
||||||
|
return bson.M{"_id": objectID}
|
||||||
|
}, optionsFunc...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// FindMany executes a find command and returns many models the matching documents in the collection.
|
||||||
|
func (dao *RedPacketHistory) FindMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryFindManyOptionsFunc) ([]*modelpkg.RedPacketHistory, error) {
|
||||||
|
var (
|
||||||
|
opts *options.FindOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
cur, err := dao.Collection.Find(ctx, filter, opts)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
models := make([]*modelpkg.RedPacketHistory, 0)
|
||||||
|
|
||||||
|
if err = cur.All(ctx, &models); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return models, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteOne executes a delete command to delete at most one document from the collection.
|
||||||
|
func (dao *RedPacketHistory) DeleteOne(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.DeleteOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.DeleteOne(ctx, filter, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteOneByID executes a delete command to delete at most one document from the collection.
|
||||||
|
func (dao *RedPacketHistory) DeleteOneByID(ctx context.Context, id string, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) {
|
||||||
|
objectID, err := primitive.ObjectIDFromHex(id)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.DeleteOne(ctx, func(cols *RedPacketHistoryColumns) interface{} {
|
||||||
|
return bson.M{"_id": objectID}
|
||||||
|
}, optionsFunc...)
|
||||||
|
}
|
||||||
|
|
||||||
|
// DeleteMany executes a delete command to delete documents from the collection.
|
||||||
|
func (dao *RedPacketHistory) DeleteMany(ctx context.Context, filterFunc RedPacketHistoryFilterFunc, optionsFunc ...RedPacketHistoryDeleteOptionsFunc) (*mongo.DeleteResult, error) {
|
||||||
|
var (
|
||||||
|
opts *options.DeleteOptions
|
||||||
|
filter = filterFunc(dao.Columns)
|
||||||
|
)
|
||||||
|
|
||||||
|
if len(optionsFunc) > 0 {
|
||||||
|
opts = optionsFunc[0](dao.Columns)
|
||||||
|
}
|
||||||
|
|
||||||
|
return dao.Collection.DeleteMany(ctx, filter, opts)
|
||||||
|
}
|
||||||
|
|
||||||
|
// autofill when inserting data
|
||||||
|
func (dao *RedPacketHistory) autofill(ctx context.Context, model *modelpkg.RedPacketHistory) error {
|
||||||
|
if model.ID.IsZero() {
|
||||||
|
model.ID = primitive.NewObjectID()
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/mongox"
|
||||||
|
|
||||||
|
"mongo.games.com/game/dao/internal"
|
||||||
|
modelpkg "mongo.games.com/game/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_ = context.Background()
|
||||||
|
_ = logger.Logger
|
||||||
|
_ = bson.M{}
|
||||||
|
_ = mongo.Database{}
|
||||||
|
)
|
||||||
|
|
||||||
|
type RedPacketColumns = internal.RedPacketColumns
|
||||||
|
|
||||||
|
type RedPacket struct {
|
||||||
|
*internal.RedPacket
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetRedPacket(key string) (*RedPacket, error) {
|
||||||
|
return mongox.GetDao(key, NewRedPacket)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRedPacket(db *mongo.Database, c *mongo.Collection) (*RedPacket, any) {
|
||||||
|
if db == nil || c == nil {
|
||||||
|
return &RedPacket{}, &modelpkg.RedPacket{}
|
||||||
|
}
|
||||||
|
|
||||||
|
v := internal.NewRedPacket()
|
||||||
|
v.Database = db
|
||||||
|
v.Collection = c
|
||||||
|
|
||||||
|
// 创建索引
|
||||||
|
c.Indexes().CreateOne(context.Background(), mongo.IndexModel{
|
||||||
|
Keys: bson.D{{"cid", 1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
})
|
||||||
|
c.Indexes().CreateOne(context.Background(), mongo.IndexModel{
|
||||||
|
Keys: bson.D{{"ts", 1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
})
|
||||||
|
c.Indexes().CreateOne(context.Background(), mongo.IndexModel{
|
||||||
|
Keys: bson.D{{"ts", -1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
})
|
||||||
|
|
||||||
|
return &RedPacket{RedPacket: v}, &modelpkg.RedPacket{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacket) GetAll() (res []*modelpkg.RedPacket, err error) {
|
||||||
|
res, err = r.FindMany(context.Background(), func(cols *RedPacketColumns) interface{} {
|
||||||
|
return bson.M{}
|
||||||
|
})
|
||||||
|
if err != nil && !errors.Is(err, mongo.ErrNoDocuments) {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacket) UpdateAll(list []*modelpkg.RedPacket) error {
|
||||||
|
var operations []mongo.WriteModel
|
||||||
|
for _, v := range list {
|
||||||
|
updateDataMap := bson.M{
|
||||||
|
"$set": v,
|
||||||
|
}
|
||||||
|
delete(updateDataMap["$set"].(bson.M), "_id") // 删除 _id 字段
|
||||||
|
operations = append(operations, mongo.NewUpdateOneModel().SetFilter(bson.M{"_id": v.ID}).SetUpdate(bson.M{"$set": v}).SetUpsert(true))
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := r.Collection.BulkWrite(context.Background(), operations) // 批量更新
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("RedPacket.UpdateAll error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
package dao
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo"
|
||||||
|
"go.mongodb.org/mongo-driver/mongo/options"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/mongox"
|
||||||
|
|
||||||
|
"mongo.games.com/game/dao/internal"
|
||||||
|
modelpkg "mongo.games.com/game/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_ = context.Background()
|
||||||
|
_ = logger.Logger
|
||||||
|
_ = bson.M{}
|
||||||
|
_ = mongo.Database{}
|
||||||
|
)
|
||||||
|
|
||||||
|
type RedPacketHistoryColumns = internal.RedPacketHistoryColumns
|
||||||
|
|
||||||
|
type RedPacketHistory struct {
|
||||||
|
*internal.RedPacketHistory
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetRedPacketHistory(key string) (*RedPacketHistory, error) {
|
||||||
|
return mongox.GetDao(key, NewRedPacketHistory)
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewRedPacketHistory(db *mongo.Database, c *mongo.Collection) (*RedPacketHistory, any) {
|
||||||
|
if db == nil || c == nil {
|
||||||
|
return &RedPacketHistory{}, &modelpkg.RedPacketHistory{}
|
||||||
|
}
|
||||||
|
|
||||||
|
v := internal.NewRedPacketHistory()
|
||||||
|
v.Database = db
|
||||||
|
v.Collection = c
|
||||||
|
c.Indexes().CreateMany(context.Background(), []mongo.IndexModel{
|
||||||
|
{
|
||||||
|
Keys: bson.D{{"snid", 1}, {"cid", 1}, {"ts", -1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Keys: bson.D{{"snid", 1}, {"ts", -1}},
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Keys: bson.D{{"cid", 1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Keys: bson.D{{"ts", 1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Keys: bson.D{{"itemid", -1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Keys: bson.D{{"itemnum", -1}}, // 1 表示升序,-1 表示降序
|
||||||
|
Options: options.Index().SetBackground(true).SetSparse(true), // 后台创建索引,稀疏索引
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
return &RedPacketHistory{RedPacketHistory: v}, &modelpkg.RedPacketHistory{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketHistory) GetHistory(snid int32, cid int64) ([]*modelpkg.RedPacketHistory, error) {
|
||||||
|
res, err := r.FindMany(context.Background(), func(cols *internal.RedPacketHistoryColumns) interface{} {
|
||||||
|
if cid > 0 {
|
||||||
|
return bson.M{cols.Snid: snid, cols.Cid: cid}
|
||||||
|
}
|
||||||
|
return bson.M{cols.Snid: snid}
|
||||||
|
}, func(cols *internal.RedPacketHistoryColumns) *options.FindOptions {
|
||||||
|
return options.Find().SetSort(bson.D{{cols.Ts, -1}}).SetLimit(30)
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("RedPacketHistory.GetHistory ", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketHistory) Save(history *modelpkg.RedPacketHistory) error {
|
||||||
|
_, err := r.InsertOne(context.Background(), history)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("RedPacketHistory.Insert ", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
|
||||||
|
в† ЁГ
|
||||||
|
ив†
|
||||||
|
Р†
|
||||||
|
Вв† Ќ
|
||||||
|
Ь±к ђN
|
||||||
|
о±к Р†
|
||||||
|
ъўЌ Ќ
|
||||||
|
иб† Р†
|
||||||
|
¶а† °к
|
||||||
|
d»к ЂВЧ/
|
||||||
|
|
@ -0,0 +1,76 @@
|
||||||
|
{
|
||||||
|
"Arr": [
|
||||||
|
{
|
||||||
|
"Id": 1,
|
||||||
|
"Rate": 4000,
|
||||||
|
"Gain": {
|
||||||
|
"50018": 5
|
||||||
|
},
|
||||||
|
"Value": 25000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 2,
|
||||||
|
"Rate": 1000,
|
||||||
|
"Gain": {
|
||||||
|
"50018": 10
|
||||||
|
},
|
||||||
|
"Value": 50000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 3,
|
||||||
|
"Rate": 450,
|
||||||
|
"Gain": {
|
||||||
|
"50018": 20
|
||||||
|
},
|
||||||
|
"Value": 100000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 4,
|
||||||
|
"Rate": 1500,
|
||||||
|
"Gain": {
|
||||||
|
"30001": 1
|
||||||
|
},
|
||||||
|
"Value": 10000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 5,
|
||||||
|
"Rate": 750,
|
||||||
|
"Gain": {
|
||||||
|
"30001": 5
|
||||||
|
},
|
||||||
|
"Value": 50000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 6,
|
||||||
|
"Rate": 250,
|
||||||
|
"Gain": {
|
||||||
|
"100002": 1
|
||||||
|
},
|
||||||
|
"Value": 100000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 7,
|
||||||
|
"Rate": 1000,
|
||||||
|
"Gain": {
|
||||||
|
"50017": 1
|
||||||
|
},
|
||||||
|
"Value": 50000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 8,
|
||||||
|
"Rate": 950,
|
||||||
|
"Gain": {
|
||||||
|
"50016": 1
|
||||||
|
},
|
||||||
|
"Value": 30000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 9,
|
||||||
|
"Rate": 100,
|
||||||
|
"Gain": {
|
||||||
|
"30011": 1
|
||||||
|
},
|
||||||
|
"Value": 100000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Binary file not shown.
|
|
@ -4520,7 +4520,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2110001,
|
"Id": 2110001,
|
||||||
"Name": "十三张四人",
|
"Name": "十三张四人",
|
||||||
"Title": "1",
|
"Title": "新手场",
|
||||||
"GameId": 211,
|
"GameId": 211,
|
||||||
"GameRule": 21100,
|
"GameRule": 21100,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4574,7 +4574,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2110002,
|
"Id": 2110002,
|
||||||
"Name": "十三张四人",
|
"Name": "十三张四人",
|
||||||
"Title": "2",
|
"Title": "中级场",
|
||||||
"GameId": 211,
|
"GameId": 211,
|
||||||
"GameRule": 21100,
|
"GameRule": 21100,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4628,7 +4628,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2110003,
|
"Id": 2110003,
|
||||||
"Name": "十三张四人",
|
"Name": "十三张四人",
|
||||||
"Title": "3",
|
"Title": "高级场",
|
||||||
"GameId": 211,
|
"GameId": 211,
|
||||||
"GameRule": 21100,
|
"GameRule": 21100,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4682,7 +4682,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2110004,
|
"Id": 2110004,
|
||||||
"Name": "十三张四人",
|
"Name": "十三张四人",
|
||||||
"Title": "4",
|
"Title": "富豪场",
|
||||||
"GameId": 211,
|
"GameId": 211,
|
||||||
"GameRule": 21100,
|
"GameRule": 21100,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4736,7 +4736,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2110005,
|
"Id": 2110005,
|
||||||
"Name": "十三张四人",
|
"Name": "十三张四人",
|
||||||
"Title": "5",
|
"Title": "至尊场",
|
||||||
"GameId": 211,
|
"GameId": 211,
|
||||||
"GameRule": 21100,
|
"GameRule": 21100,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4790,7 +4790,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2110006,
|
"Id": 2110006,
|
||||||
"Name": "十三张四人",
|
"Name": "十三张四人",
|
||||||
"Title": "6",
|
"Title": "大神场",
|
||||||
"GameId": 211,
|
"GameId": 211,
|
||||||
"GameRule": 21100,
|
"GameRule": 21100,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4843,7 +4843,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2120001,
|
"Id": 2120001,
|
||||||
"Name": "十三张八人",
|
"Name": "十三张八人",
|
||||||
"Title": "1",
|
"Title": "新手场",
|
||||||
"GameId": 212,
|
"GameId": 212,
|
||||||
"GameRule": 21200,
|
"GameRule": 21200,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4897,7 +4897,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2120002,
|
"Id": 2120002,
|
||||||
"Name": "十三张八人",
|
"Name": "十三张八人",
|
||||||
"Title": "2",
|
"Title": "中级场",
|
||||||
"GameId": 212,
|
"GameId": 212,
|
||||||
"GameRule": 21200,
|
"GameRule": 21200,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -4951,7 +4951,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2120003,
|
"Id": 2120003,
|
||||||
"Name": "十三张八人",
|
"Name": "十三张八人",
|
||||||
"Title": "3",
|
"Title": "高级场",
|
||||||
"GameId": 212,
|
"GameId": 212,
|
||||||
"GameRule": 21200,
|
"GameRule": 21200,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -5005,7 +5005,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2120004,
|
"Id": 2120004,
|
||||||
"Name": "十三张八人",
|
"Name": "十三张八人",
|
||||||
"Title": "4",
|
"Title": "富豪场",
|
||||||
"GameId": 212,
|
"GameId": 212,
|
||||||
"GameRule": 21200,
|
"GameRule": 21200,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -5059,7 +5059,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2120005,
|
"Id": 2120005,
|
||||||
"Name": "十三张八人",
|
"Name": "十三张八人",
|
||||||
"Title": "5",
|
"Title": "至尊场",
|
||||||
"GameId": 212,
|
"GameId": 212,
|
||||||
"GameRule": 21200,
|
"GameRule": 21200,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -5113,7 +5113,7 @@
|
||||||
{
|
{
|
||||||
"Id": 2120006,
|
"Id": 2120006,
|
||||||
"Name": "十三张八人",
|
"Name": "十三张八人",
|
||||||
"Title": "6",
|
"Title": "大神场",
|
||||||
"GameId": 212,
|
"GameId": 212,
|
||||||
"GameRule": 21200,
|
"GameRule": 21200,
|
||||||
"GameType": 2,
|
"GameType": 2,
|
||||||
|
|
@ -7019,6 +7019,41 @@
|
||||||
"PlayerWaterRate": 100,
|
"PlayerWaterRate": 100,
|
||||||
"BetWaterRate": 100,
|
"BetWaterRate": 100,
|
||||||
"GameName": "娃娃机"
|
"GameName": "娃娃机"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 6090001,
|
||||||
|
"Name": "推币机",
|
||||||
|
"Title": "推币机",
|
||||||
|
"GameId": 609,
|
||||||
|
"GameRule": 60900,
|
||||||
|
"GameType": 5,
|
||||||
|
"SceneType": 1,
|
||||||
|
"Desc": "0",
|
||||||
|
"ShowType": 3,
|
||||||
|
"ShowId": 60900,
|
||||||
|
"Turn": 60900,
|
||||||
|
"BetDec": "0",
|
||||||
|
"Ai": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"OtherIntParams": [
|
||||||
|
5000,
|
||||||
|
10000,
|
||||||
|
15000
|
||||||
|
],
|
||||||
|
"RobotNumRng": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SameIpLimit": 1,
|
||||||
|
"GameDif": "609",
|
||||||
|
"GameClass": 2,
|
||||||
|
"PlatformName": "越南棋牌",
|
||||||
|
"MaxBetCoin": [
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"PlayerWaterRate": 100,
|
||||||
|
"BetWaterRate": 100,
|
||||||
|
"GameName": "推币机"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
|
@ -7226,6 +7226,302 @@
|
||||||
"CompositionMax": 1,
|
"CompositionMax": 1,
|
||||||
"Location": "0",
|
"Location": "0",
|
||||||
"Describe": "作用:用于报名特殊钻石赛事;\n产出途径:存钱罐"
|
"Describe": "作用:用于报名特殊钻石赛事;\n产出途径:存钱罐"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50014,
|
||||||
|
"Name": "爆竹",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 28,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "可在年兽活动中击退年兽,获得奖品"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50015,
|
||||||
|
"Name": "火箭爆竹",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 28,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "可在年兽活动中击退年兽,获得奖品"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50016,
|
||||||
|
"Name": "梅花",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 29,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "可在推币机活动兑换道具"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50017,
|
||||||
|
"Name": "大金币",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 29,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "推币机活动中掉落的3D道具",
|
||||||
|
"Num": 50000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50018,
|
||||||
|
"Name": "3D金币5K",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 29,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "推币机活动中掉落的3D道具",
|
||||||
|
"Num": 5000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50019,
|
||||||
|
"Name": "3D金币10K",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 29,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "推币机活动中掉落的3D道具",
|
||||||
|
"Num": 10000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50020,
|
||||||
|
"Name": "3D金币15K",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 29,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"SaleType": 1,
|
||||||
|
"SaleGold": 5000,
|
||||||
|
"Composition": 1,
|
||||||
|
"CompositionMax": 9999,
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "推币机活动中掉落的3D道具",
|
||||||
|
"Num": 15000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 50021,
|
||||||
|
"Name": "震动效果",
|
||||||
|
"ShowLocation": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Classify": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Type": 29,
|
||||||
|
"Effect0": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Effect": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"Location": "0",
|
||||||
|
"Describe": "推币机震动次数"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
|
@ -267,6 +267,12 @@
|
||||||
"Name": "娃娃机",
|
"Name": "娃娃机",
|
||||||
"GameId": 608,
|
"GameId": 608,
|
||||||
"GameDif": "608"
|
"GameDif": "608"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 60900,
|
||||||
|
"Name": "推币机",
|
||||||
|
"GameId": 609,
|
||||||
|
"GameDif": "609"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Binary file not shown.
|
|
@ -0,0 +1,29 @@
|
||||||
|
|
||||||
|
4
|
||||||
|
SignReward50014,10;100001,100000"签到奖励
|
||||||
|
.
SignExcReward50015,1"签到额外奖励
|
||||||
|
=SignExcRewardMax2"$签到额外奖励赠送次数上限
|
||||||
|
9SignExcRewardProp30"签到额外奖励赠送概率
|
||||||
|
BossExp6800000"
|
||||||
|
BOSS血量
|
||||||
|
:
|
||||||
|
BossReward100001,1000000;100002,10"BOSS击杀奖励
|
||||||
|
/
LuckyRankNeed10000"幸运榜上榜条件
|
||||||
|
/RankNeed7000000"总伤害榜上榜条件
|
||||||
|
> LittleHurtGold
|
||||||
|
8000,12000"小爆竹造成的伤害范围
|
||||||
|
>
|
||||||
|
BigHurtGold
400000,600000"大爆竹造成的伤害范围
|
||||||
|
4
|
||||||
|
BigHurtExc30001"大爆竹额外掉落道具ID
|
||||||
|
=BigHurtExcNumber3,15"!大爆竹额外掉落数量范围
|
||||||
|
5
LittleGuaranteed30"小爆竹保底掉落次数
|
||||||
|
ALittleGuaranteedReward100002,5"小爆竹保底掉落物品
|
||||||
|
2
BigGuaranteed10"大爆竹保底掉落次数
|
||||||
|
>BigGuaranteedReward30001,80"大爆竹保底掉落物品
|
||||||
|
.
|
||||||
|
GiftShopID991001,991002,991003"礼包ID
|
||||||
|
@
GiftShopLimit3,0,0"&礼包每日限购次数,0为不限购
|
||||||
|
4BossExcLimit30"年兽死亡额外掉落要求
|
||||||
|
" BuffCount1"Buff生效次数
|
||||||
|
oExchangeDiamond30,5,1500000"L单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量
|
||||||
|
|
@ -0,0 +1,130 @@
|
||||||
|
{
|
||||||
|
"Arr": [
|
||||||
|
{
|
||||||
|
"Id": 1,
|
||||||
|
"PorpName": "SignReward",
|
||||||
|
"PropValue": "50014,10;100001,100000",
|
||||||
|
"PropDec": "签到奖励"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 2,
|
||||||
|
"PorpName": "SignExcReward",
|
||||||
|
"PropValue": "50015,1",
|
||||||
|
"PropDec": "签到额外奖励"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 3,
|
||||||
|
"PorpName": "SignExcRewardMax",
|
||||||
|
"PropValue": "2",
|
||||||
|
"PropDec": "签到额外奖励赠送次数上限"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 4,
|
||||||
|
"PorpName": "SignExcRewardProp",
|
||||||
|
"PropValue": "30",
|
||||||
|
"PropDec": "签到额外奖励赠送概率"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 5,
|
||||||
|
"PorpName": "BossExp",
|
||||||
|
"PropValue": "6800000",
|
||||||
|
"PropDec": "BOSS血量"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 6,
|
||||||
|
"PorpName": "BossReward",
|
||||||
|
"PropValue": "100001,1000000;100002,10",
|
||||||
|
"PropDec": "BOSS击杀奖励"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 7,
|
||||||
|
"PorpName": "LuckyRankNeed",
|
||||||
|
"PropValue": "10000",
|
||||||
|
"PropDec": "幸运榜上榜条件"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 8,
|
||||||
|
"PorpName": "RankNeed",
|
||||||
|
"PropValue": "7000000",
|
||||||
|
"PropDec": "总伤害榜上榜条件"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 9,
|
||||||
|
"PorpName": "LittleHurtGold",
|
||||||
|
"PropValue": "8000,12000",
|
||||||
|
"PropDec": "小爆竹造成的伤害范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 10,
|
||||||
|
"PorpName": "BigHurtGold",
|
||||||
|
"PropValue": "400000,600000",
|
||||||
|
"PropDec": "大爆竹造成的伤害范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 11,
|
||||||
|
"PorpName": "BigHurtExc",
|
||||||
|
"PropValue": "30001",
|
||||||
|
"PropDec": "大爆竹额外掉落道具ID"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 12,
|
||||||
|
"PorpName": "BigHurtExcNumber",
|
||||||
|
"PropValue": "3,15",
|
||||||
|
"PropDec": "大爆竹额外掉落数量范围"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13,
|
||||||
|
"PorpName": "LittleGuaranteed",
|
||||||
|
"PropValue": "30",
|
||||||
|
"PropDec": "小爆竹保底掉落次数"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14,
|
||||||
|
"PorpName": "LittleGuaranteedReward",
|
||||||
|
"PropValue": "100002,5",
|
||||||
|
"PropDec": "小爆竹保底掉落物品"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 15,
|
||||||
|
"PorpName": "BigGuaranteed",
|
||||||
|
"PropValue": "10",
|
||||||
|
"PropDec": "大爆竹保底掉落次数"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 16,
|
||||||
|
"PorpName": "BigGuaranteedReward",
|
||||||
|
"PropValue": "30001,80",
|
||||||
|
"PropDec": "大爆竹保底掉落物品"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 17,
|
||||||
|
"PorpName": "GiftShopID",
|
||||||
|
"PropValue": "991001,991002,991003",
|
||||||
|
"PropDec": "礼包ID"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 18,
|
||||||
|
"PorpName": "GiftShopLimit",
|
||||||
|
"PropValue": "3,0,0",
|
||||||
|
"PropDec": "礼包每日限购次数,0为不限购"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 19,
|
||||||
|
"PorpName": "BossExcLimit",
|
||||||
|
"PropValue": "30",
|
||||||
|
"PropDec": "年兽死亡额外掉落要求"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 20,
|
||||||
|
"PorpName": "BuffCount",
|
||||||
|
"PropValue": "1",
|
||||||
|
"PropDec": "Buff生效次数"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 21,
|
||||||
|
"PorpName": "ExchangeDiamond",
|
||||||
|
"PropValue": "30,5,1500000",
|
||||||
|
"PropDec": "单次兑换爆竹所需要消耗的钻石,获得数量,获得金币数量"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
|
||||||
|
"¹ê"¡<>"¢<>d
|
||||||
|
"¡<>"¢<>d"¸ê
|
||||||
|
"¡<>"¢<>d"¸ê
|
||||||
|
"¡<>"¢<>d
|
||||||
|
"¡<>"¢<>c
|
||||||
|
"¡<>"¢<>b
|
||||||
|
"¡<>"¢<>a
|
||||||
|
"¡<>"¢<>`
|
||||||
|
"¡<>"¢<>_
|
||||||
|
|
||||||
|
|
||||||
|
"¡<>"¢<>^
|
||||||
|
"¡<>"¢<>]
|
||||||
|
"¢<>\"¡<>
|
||||||
|
"¡<>"¢<>[
|
||||||
|
"¢<>Z"¡<>
|
||||||
|
"¡<>"¢<>Y
|
||||||
|
"¡<>"¢<>X
|
||||||
|
"¡<>"¢<>W
|
||||||
|
"¡<>"¢<>V
|
||||||
|
"¡<>"¢<>U
|
||||||
|
"¡<>"¢<>T
|
||||||
|
"¡<>"¢<>S
|
||||||
|
"¡<>"¢<>R
|
||||||
|
"¡<>"¢<>Q
|
||||||
|
"¡<>"¢<>P
|
||||||
|
"¡<>"¢<>O
|
||||||
|
"¡<>"¢<>N
|
||||||
|
"¢<>M"¡<>
|
||||||
|
"¢<>L"¡<>
|
||||||
|
"¡<>"¢<>K
|
||||||
|
"¡<>"¢<>J
|
||||||
|
"¡<>"¢<>I
|
||||||
|
"¢<>H"¡<>
|
||||||
|
!!"¡<>"¢<>G
|
||||||
|
"""¡<>"¢<>F
|
||||||
|
##"¡<>"¢<>E
|
||||||
|
$$"¡<>"¢<>D
|
||||||
|
%%"¡<>"¢<>C
|
||||||
|
&&"¡<>"¢<>B
|
||||||
|
''"¡<>"¢<>A
|
||||||
|
(("¡<>"¢<>@
|
||||||
|
)"¡<>"¢<>d"¹ê
|
||||||
|
*"¡<>"¢<>d"¸ê
|
||||||
|
+"¡<>"¢<>d"¸ê
|
||||||
|
,"¡<>"¢<>d
|
||||||
|
-"¡<>"¢<>c
|
||||||
|
."¡<>"¢<>b
|
||||||
|
/"¢<>a"¡<>
|
||||||
|
0"¡<>"¢<>`
|
||||||
|
1 "¢<>_"¡<>
|
||||||
|
2
|
||||||
|
"¡<>"¢<>^
|
||||||
|
3"¡<>"¢<>]
|
||||||
|
4"¡<>"¢<>\
|
||||||
|
5
"¡<>"¢<>[
|
||||||
|
6"¢<>Z"¡<>
|
||||||
|
7"¡<>"¢<>Y
|
||||||
|
8"¢<>X"¡<>
|
||||||
|
9"¡<>"¢<>W
|
||||||
|
:"¡<>"¢<>V
|
||||||
|
;"¡<>"¢<>U
|
||||||
|
<"¡<>"¢<>T
|
||||||
|
="¡<>"¢<>S
|
||||||
|
>"¡<>"¢<>R
|
||||||
|
?"¢<>Q"¡<>
|
||||||
|
@"¡<>"¢<>P
|
||||||
|
A"¡<>"¢<>O
|
||||||
|
B"¡<>"¢<>N
|
||||||
|
C"¡<>"¢<>M
|
||||||
|
D"¡<>"¢<>L
|
||||||
|
E"¡<>"¢<>K
|
||||||
|
F"¡<>"¢<>J
|
||||||
|
G"¡<>"¢<>I
|
||||||
|
H "¡<>"¢<>H
|
||||||
|
I!"¢<>G"¡<>
|
||||||
|
J""¡<>"¢<>F
|
||||||
|
K#"¡<>"¢<>E
|
||||||
|
L$"¡<>"¢<>D
|
||||||
|
M%"¡<>"¢<>C
|
||||||
|
N&"¡<>"¢<>B
|
||||||
|
O'"¡<>"¢<>A
|
||||||
|
P("¡<>"¢<>@
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
|
|
||||||
(Ђв0–8Ўи;@dH–Pc
|
(€β8–@΅θ;PdX–`c
|
||||||
((Ђв0¬8ўи;@dH¬PЗ
|
< ((€β2ΕΈ2συ8¬@Άθ;JσυJΖΈPdX¬`Η
|
||||||
яБЧ/ 2(Ђв0о8Ји;@dHоPу
|
?<18>ΑΧ/ 2(€β2ΕΈ2συ8ξ@£θ;JΖΈJσυPdXξ`σ
|
||||||
|
|
@ -18,8 +18,16 @@
|
||||||
"BuyCountMax": 2,
|
"BuyCountMax": 2,
|
||||||
"CostDiamond": 40,
|
"CostDiamond": 40,
|
||||||
"MaxGold": 10000000,
|
"MaxGold": 10000000,
|
||||||
|
"GoldExc": {
|
||||||
|
"310003": 1,
|
||||||
|
"40005": 1
|
||||||
|
},
|
||||||
"MaxDiamond": 300,
|
"MaxDiamond": 300,
|
||||||
"DiamondId": 980002,
|
"DiamondId": 980002,
|
||||||
|
"DiamondExc": {
|
||||||
|
"310003": 1,
|
||||||
|
"40006": 1
|
||||||
|
},
|
||||||
"CoinPrice": 100,
|
"CoinPrice": 100,
|
||||||
"DiamondPrice": 300,
|
"DiamondPrice": 300,
|
||||||
"DiamondNowPrice": 199
|
"DiamondNowPrice": 199
|
||||||
|
|
@ -30,8 +38,16 @@
|
||||||
"BuyCountMax": 99999999,
|
"BuyCountMax": 99999999,
|
||||||
"CostDiamond": 50,
|
"CostDiamond": 50,
|
||||||
"MaxGold": 10000000,
|
"MaxGold": 10000000,
|
||||||
|
"GoldExc": {
|
||||||
|
"310003": 1,
|
||||||
|
"40005": 2
|
||||||
|
},
|
||||||
"MaxDiamond": 750,
|
"MaxDiamond": 750,
|
||||||
"DiamondId": 980003,
|
"DiamondId": 980003,
|
||||||
|
"DiamondExc": {
|
||||||
|
"310003": 1,
|
||||||
|
"40006": 2
|
||||||
|
},
|
||||||
"CoinPrice": 100,
|
"CoinPrice": 100,
|
||||||
"DiamondPrice": 750,
|
"DiamondPrice": 750,
|
||||||
"DiamondNowPrice": 499
|
"DiamondNowPrice": 499
|
||||||
|
|
|
||||||
Binary file not shown.
|
|
@ -64,12 +64,70 @@
|
||||||
"100002": 500
|
"100002": 500
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{},
|
{
|
||||||
{},
|
"Id": 5,
|
||||||
{},
|
"Group": 2,
|
||||||
{},
|
"Cost": {
|
||||||
{},
|
"50016": 30
|
||||||
{},
|
},
|
||||||
|
"Gain": {
|
||||||
|
"40002": 1
|
||||||
|
},
|
||||||
|
"Times": 5
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 6,
|
||||||
|
"Group": 2,
|
||||||
|
"Cost": {
|
||||||
|
"50016": 10
|
||||||
|
},
|
||||||
|
"Gain": {
|
||||||
|
"100002": 3
|
||||||
|
},
|
||||||
|
"Times": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 7,
|
||||||
|
"Group": 2,
|
||||||
|
"Cost": {
|
||||||
|
"50016": 5
|
||||||
|
},
|
||||||
|
"Gain": {
|
||||||
|
"30001": 15
|
||||||
|
},
|
||||||
|
"Times": 15
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 8,
|
||||||
|
"Group": 2,
|
||||||
|
"Cost": {
|
||||||
|
"50016": 1
|
||||||
|
},
|
||||||
|
"Gain": {
|
||||||
|
"20003": 1
|
||||||
|
},
|
||||||
|
"Times": 20
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 9,
|
||||||
|
"Group": 2,
|
||||||
|
"Cost": {
|
||||||
|
"50016": 1
|
||||||
|
},
|
||||||
|
"Gain": {
|
||||||
|
"100001": 30000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 10,
|
||||||
|
"Group": 2,
|
||||||
|
"Cost": {
|
||||||
|
"50016": 1
|
||||||
|
},
|
||||||
|
"Gain": {
|
||||||
|
"50021": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
{},
|
{},
|
||||||
{},
|
{},
|
||||||
{},
|
{},
|
||||||
|
|
|
||||||
BIN
data/DB_Task.dat
BIN
data/DB_Task.dat
Binary file not shown.
|
|
@ -1234,6 +1234,439 @@
|
||||||
"Award": {
|
"Award": {
|
||||||
"100011": 50
|
"100011": 50
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13001,
|
||||||
|
"Order": 1,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "领取年兽签到奖励",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 35,
|
||||||
|
"TargetTimes": 1,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50001": 5,
|
||||||
|
"50014": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13002,
|
||||||
|
"Order": 2,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "在线时长60分钟",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 21,
|
||||||
|
"TargetTimes": 3600,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 100000,
|
||||||
|
"50014": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13003,
|
||||||
|
"Order": 3,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "购买1次任意存钱罐",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 22,
|
||||||
|
"TargetTimes": 1,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50001": 5,
|
||||||
|
"50014": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13004,
|
||||||
|
"Order": 4,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "游戏Tienlen比赛场5次",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 25,
|
||||||
|
"TargetTimes": 1,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100002": 5,
|
||||||
|
"50014": 5
|
||||||
|
},
|
||||||
|
"GameType": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13005,
|
||||||
|
"Order": 5,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "游戏十三水10次",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 5,
|
||||||
|
"TargetTimes": 10,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 30000,
|
||||||
|
"50014": 5
|
||||||
|
},
|
||||||
|
"GameType": 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13006,
|
||||||
|
"Order": 6,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日累计赢取1M金币",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 8,
|
||||||
|
"TargetTimes": 1000000,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13007,
|
||||||
|
"Order": 7,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日消耗100钻石",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 100,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13008,
|
||||||
|
"Order": 8,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日累计赢取5M金币",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 8,
|
||||||
|
"TargetTimes": 5000000,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13009,
|
||||||
|
"Order": 9,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日累计赢取10M金币",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 8,
|
||||||
|
"TargetTimes": 10000000,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13010,
|
||||||
|
"Order": 10,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日累计赢取20M金币",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 8,
|
||||||
|
"TargetTimes": 20000000,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13011,
|
||||||
|
"Order": 11,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "充值任意金额",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 7,
|
||||||
|
"TargetTimes": 1,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13012,
|
||||||
|
"Order": 12,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日消耗500钻石",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 500,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13013,
|
||||||
|
"Order": 13,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "今日充值1.99$",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 7,
|
||||||
|
"TargetTimes": 199,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 3
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13014,
|
||||||
|
"Order": 14,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "参与红包雨活动1次",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 32,
|
||||||
|
"TargetTimes": 1,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50014": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13015,
|
||||||
|
"Order": 15,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功对年兽造成伤害1000000点",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 34,
|
||||||
|
"TargetTimes": 1000000,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 500000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13016,
|
||||||
|
"Order": 16,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功对年兽造成伤害10000000点",
|
||||||
|
"ActivityType": 8,
|
||||||
|
"TaskType": 34,
|
||||||
|
"TargetTimes": 10000000,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100002": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13017,
|
||||||
|
"Order": 17,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "累计充值9.99$",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 7,
|
||||||
|
"TargetTimes": 999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 1000000,
|
||||||
|
"50015": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13018,
|
||||||
|
"Order": 18,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "累计充值19.99$",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 7,
|
||||||
|
"TargetTimes": 1999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 10000000,
|
||||||
|
"50015": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13019,
|
||||||
|
"Order": 19,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "累计充值59.99$",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 7,
|
||||||
|
"TargetTimes": 5999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 30000000,
|
||||||
|
"50015": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13020,
|
||||||
|
"Order": 20,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "累计充值99.99$",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 7,
|
||||||
|
"TargetTimes": 9999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 50000000,
|
||||||
|
"50015": 45
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13021,
|
||||||
|
"Order": 21,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功击杀1只年兽",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 33,
|
||||||
|
"TargetTimes": 1,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13022,
|
||||||
|
"Order": 22,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功击杀3只年兽",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 33,
|
||||||
|
"TargetTimes": 3,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13023,
|
||||||
|
"Order": 23,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功击杀6只年兽",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 33,
|
||||||
|
"TargetTimes": 6,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13024,
|
||||||
|
"Order": 24,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功击杀9只年兽",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 33,
|
||||||
|
"TargetTimes": 9,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13025,
|
||||||
|
"Order": 25,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功击杀12只年兽",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 33,
|
||||||
|
"TargetTimes": 12,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 13026,
|
||||||
|
"Order": 26,
|
||||||
|
"Name": "年兽活动",
|
||||||
|
"Des": "成功击杀20只年兽",
|
||||||
|
"ActivityType": 9,
|
||||||
|
"TaskType": 33,
|
||||||
|
"TargetTimes": 20,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"50015": 45
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14001,
|
||||||
|
"Order": 1,
|
||||||
|
"Name": "累消活动",
|
||||||
|
"Des": "今日消耗99钻石",
|
||||||
|
"ActivityType": 10,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 99,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 100000,
|
||||||
|
"50014": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14002,
|
||||||
|
"Order": 2,
|
||||||
|
"Name": "累消活动",
|
||||||
|
"Des": "今日消耗499钻石",
|
||||||
|
"ActivityType": 10,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 499,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 200000,
|
||||||
|
"50015": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14003,
|
||||||
|
"Order": 3,
|
||||||
|
"Name": "累消活动",
|
||||||
|
"Des": "今日消耗999钻石",
|
||||||
|
"ActivityType": 10,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 300000,
|
||||||
|
"50015": 5
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14004,
|
||||||
|
"Order": 4,
|
||||||
|
"Name": "累消活动",
|
||||||
|
"Des": "今日消耗1999钻石",
|
||||||
|
"ActivityType": 10,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 1999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 500000,
|
||||||
|
"50015": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14005,
|
||||||
|
"Order": 5,
|
||||||
|
"Name": "累消活动",
|
||||||
|
"Des": "今日消耗2999钻石",
|
||||||
|
"ActivityType": 10,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 2999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 1000000,
|
||||||
|
"50015": 15
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 14006,
|
||||||
|
"Order": 6,
|
||||||
|
"Name": "累消活动",
|
||||||
|
"Des": "今日消耗4999钻石",
|
||||||
|
"ActivityType": 10,
|
||||||
|
"TaskType": 27,
|
||||||
|
"TargetTimes": 4999,
|
||||||
|
"FinishTimes": 1,
|
||||||
|
"Award": {
|
||||||
|
"100001": 2000000,
|
||||||
|
"50015": 25
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
{
|
||||||
|
"GameName":"推币机",
|
||||||
|
"GameId":609,
|
||||||
|
"GameMode":[0],
|
||||||
|
"SceneType":[1],
|
||||||
|
"CanForceStart":true,
|
||||||
|
"MinPlayerCnt":1,
|
||||||
|
"DefaultPlayerCnt":1
|
||||||
|
}
|
||||||
|
|
@ -14,5 +14,9 @@
|
||||||
"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\":\"លេងហ្គេម ចាប់រង្វាន់\"}",
|
"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\":\"សូមអបអរសាទរចំពោះការឈ្នះរង្វាន់ធំក្នុងសកម្មភាពចាប់រង្វាន់ក្នុងបន្ទប់មិត្តភ័ក្តិរបស់អ្នក រង្វាន់នឹងត្រូវបានផ្ញើតាមអ៊ីម៉ែល សូមពិនិត្យមើលវាដោយយកចិត្តទុកដាក់។\"}",
|
"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\":\"សូមអបអរសាទរចំពោះការឈ្នះរង្វាន់ធំក្នុងសកម្មភាពចាប់រង្វាន់ក្នុងបន្ទប់មិត្តភ័ក្តិរបស់អ្នក រង្វាន់នឹងត្រូវបានផ្ញើតាមអ៊ីម៉ែល សូមពិនិត្យមើលវាដោយយកចិត្តទុកដាក់។\"}",
|
||||||
"TelCodeTitle": "{\"zh\":\"话费卡兑换码\",\"vi\":\"Mã đổi thẻ điện thoại\",\"en\":\"Phone card redemption code\",\"kh\":\"លេខកូដប្រោសលោះកាតទូរស័ព្ទ\"}"
|
"TelCodeTitle": "{\"zh\":\"话费卡兑换码\",\"vi\":\"Mã đổi thẻ điện thoại\",\"en\":\"Phone card redemption code\",\"kh\":\"លេខកូដប្រោសលោះកាតទូរស័ព្ទ\"}",
|
||||||
|
"NianLuckTitle": "{\"zh\":\"幸运榜排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}",
|
||||||
|
"NianLuckAward": "{\"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 ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}",
|
||||||
|
"NianDamageTitle": "{\"zh\":\"年兽活动排行奖励\",\"vi\":\"Vượt qua phần thưởng xếp hạng\",\"en\":\"Pass Ranking Rewards\",\"kh\":\"រង្វាន់ចំណាត់ថ្នាក់ឆ្លងកាត់\"}",
|
||||||
|
"NianDamageAward": "{\"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 ក្នុងចំណាត់ថ្នាក់ឆ្លងកាត់។ រង្វាន់ចំណាត់ថ្នាក់ត្រូវបានចេញ។ សូមត្រួតពិនិត្យ។\"}"
|
||||||
}
|
}
|
||||||
|
|
@ -76,4 +76,20 @@ func init() {
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
//年兽排行榜
|
||||||
|
mq.RegisterHandler(&mq.RegisterHandlerParam{
|
||||||
|
Name: model.MQRankNian,
|
||||||
|
Data: &model.NianInfo{},
|
||||||
|
Handler: func(data interface{}) (err error) {
|
||||||
|
log, ok := data.(*model.NianInfo)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = svc.RankNianUpsert(log)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("RankNianUpsert err: %v", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ package mq
|
||||||
import (
|
import (
|
||||||
"mongo.games.com/goserver/core/logger"
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
|
||||||
|
"mongo.games.com/game/dao"
|
||||||
"mongo.games.com/game/dbproxy/svc"
|
"mongo.games.com/game/dbproxy/svc"
|
||||||
"mongo.games.com/game/model"
|
"mongo.games.com/game/model"
|
||||||
"mongo.games.com/game/mq"
|
"mongo.games.com/game/mq"
|
||||||
|
|
@ -27,4 +28,28 @@ func init() {
|
||||||
return
|
return
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
mq.RegisterHandler(&mq.RegisterHandlerParam{
|
||||||
|
Name: mq.DBRedPacket,
|
||||||
|
Data: &model.RedPacketHistory{},
|
||||||
|
Handler: func(data interface{}) (err error) {
|
||||||
|
log, ok := data.(*model.RedPacketHistory)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
d, err := dao.GetRedPacketHistory(log.Platform)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("get RedPacketHistory failed: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = d.Save(log)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("Save RedPacketHistory failed: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
},
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,9 @@ func (svc *FriendUnreadSvc) UpsertFriendUnread(args *model.FriendUnreadByKey, re
|
||||||
if cc == nil {
|
if cc == nil {
|
||||||
return FriendUnreadColError
|
return FriendUnreadColError
|
||||||
}
|
}
|
||||||
|
if ret == nil {
|
||||||
|
ret = &model.FriendUnreadRet{}
|
||||||
|
}
|
||||||
err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU)
|
err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU)
|
||||||
if err != nil && err != mgo.ErrNotFound {
|
if err != nil && err != mgo.ErrNotFound {
|
||||||
logger.Logger.Error("UpsertFriendUnread Find is err: ", err)
|
logger.Logger.Error("UpsertFriendUnread Find is err: ", err)
|
||||||
|
|
@ -76,6 +79,9 @@ func (svc *FriendUnreadSvc) UpdateFriendUnread(args *model.FriendUnreadByKey, re
|
||||||
if cc == nil {
|
if cc == nil {
|
||||||
return FriendUnreadColError
|
return FriendUnreadColError
|
||||||
}
|
}
|
||||||
|
if ret == nil {
|
||||||
|
ret = &model.FriendUnreadRet{}
|
||||||
|
}
|
||||||
err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU)
|
err := cc.Find(bson.M{"snid": args.SnId}).One(&ret.FU)
|
||||||
if err != nil && err != mgo.ErrNotFound {
|
if err != nil && err != mgo.ErrNotFound {
|
||||||
logger.Logger.Error("UpdateFriendUnread Find is err: ", err)
|
logger.Logger.Error("UpdateFriendUnread Find is err: ", err)
|
||||||
|
|
@ -98,6 +104,9 @@ func (svc *FriendUnreadSvc) QueryFriendUnreadByKey(args *model.FriendUnreadByKey
|
||||||
if fc == nil {
|
if fc == nil {
|
||||||
return FriendUnreadColError
|
return FriendUnreadColError
|
||||||
}
|
}
|
||||||
|
if ret == nil {
|
||||||
|
ret = &model.FriendUnreadRet{}
|
||||||
|
}
|
||||||
err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.FU)
|
err := fc.Find(bson.M{"snid": args.SnId}).One(&ret.FU)
|
||||||
if err != nil && err != mgo.ErrNotFound {
|
if err != nil && err != mgo.ErrNotFound {
|
||||||
logger.Logger.Error("QueryFriendUnreadByKey is err: ", err)
|
logger.Logger.Error("QueryFriendUnreadByKey is err: ", err)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,143 @@
|
||||||
|
package svc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"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 (
|
||||||
|
RankNianDBName = "log"
|
||||||
|
RankNianCollName = "log_ranknian"
|
||||||
|
RankNianColError = errors.New("RankNian collection open failed")
|
||||||
|
)
|
||||||
|
|
||||||
|
func RankNianCollection(plt string) *mongo.Collection {
|
||||||
|
s := mongo.MgoSessionMgrSington.GetPltMgoSession(plt, RankNianDBName)
|
||||||
|
if s != nil {
|
||||||
|
c, first := s.DB().C(RankNianCollName)
|
||||||
|
if first {
|
||||||
|
c.EnsureIndex(mgo.Index{Key: []string{"snid"}, Background: true, Sparse: true})
|
||||||
|
c.EnsureIndex(mgo.Index{Key: []string{"-luck"}, Background: true, Sparse: true})
|
||||||
|
c.EnsureIndex(mgo.Index{Key: []string{"-damage"}, Background: true, Sparse: true})
|
||||||
|
}
|
||||||
|
return c
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func RankNianUpsert(args *model.NianInfo) error {
|
||||||
|
cc := RankNianCollection(args.Platform)
|
||||||
|
if cc == nil {
|
||||||
|
return RankNianColError
|
||||||
|
}
|
||||||
|
update := bson.M{
|
||||||
|
"$set": bson.M{
|
||||||
|
"platform": args.Platform,
|
||||||
|
"name": args.Name,
|
||||||
|
"damage": args.Damage,
|
||||||
|
"modid": args.ModId,
|
||||||
|
"ts": args.Ts,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if args.Luck != 0 {
|
||||||
|
update["$set"].(bson.M)["luck"] = args.Luck
|
||||||
|
}
|
||||||
|
if args.LuckTime != 0 {
|
||||||
|
update["$set"].(bson.M)["lucktime"] = args.LuckTime
|
||||||
|
}
|
||||||
|
_, err := cc.Upsert(
|
||||||
|
bson.M{"snid": args.SnId},
|
||||||
|
update,
|
||||||
|
)
|
||||||
|
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
||||||
|
logger.Logger.Error("RankNianSvc.Upsert is err: ", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type RankNianSvc struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (svc *RankNianSvc) Upsert(args *model.NianInfo, ret *bool) error {
|
||||||
|
err := RankNianUpsert(args)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*ret = true
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 幸运榜
|
||||||
|
func (svc *RankNianSvc) LuckFind(args *model.FindNianListArgs, ret *model.FindNianListReply) error {
|
||||||
|
fc := RankNianCollection(args.Platform)
|
||||||
|
if fc == nil {
|
||||||
|
return RankNianColError
|
||||||
|
}
|
||||||
|
|
||||||
|
err := fc.Find(bson.M{"luck": bson.M{"$gt": 0}}).Sort("-luck").Limit(40).All(&ret.List)
|
||||||
|
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
||||||
|
logger.Logger.Error("QueryMatchSeason is err: ", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 伤害榜
|
||||||
|
func (svc *RankNianSvc) DamageFind(args *model.FindNianListArgs, ret *model.FindNianListReply) error {
|
||||||
|
fc := RankNianCollection(args.Platform)
|
||||||
|
if fc == nil {
|
||||||
|
return RankNianColError
|
||||||
|
}
|
||||||
|
|
||||||
|
err := fc.Find(bson.M{"damage": bson.M{"$gt": 0}}).Sort("-damage").Limit(40).All(&ret.List)
|
||||||
|
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
||||||
|
logger.Logger.Error("QueryMatchSeason is err: ", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (svc *RankNianSvc) UpdateAll(args *model.FindNianListArgs, ret *model.FindNianListReply) error {
|
||||||
|
fc := RankNianCollection(args.Platform)
|
||||||
|
if fc == nil {
|
||||||
|
return RankNianColError
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据 args 中的条件构建查询
|
||||||
|
query := bson.M{"platform": args.Platform}
|
||||||
|
|
||||||
|
update := bson.M{
|
||||||
|
"$set": bson.M{
|
||||||
|
"luck": 0,
|
||||||
|
"lucktime": 0,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
_, err := fc.UpdateAll(query, update)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("RankNianSvc.UpdateAll is err: ", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func (svc *RankNianSvc) DelAll(args *model.FindNianListArgs, ret *model.FindNianListReply) error {
|
||||||
|
fc := RankNianCollection(args.Platform)
|
||||||
|
if fc == nil {
|
||||||
|
return RankNianColError
|
||||||
|
}
|
||||||
|
query := bson.M{"platform": args.Platform}
|
||||||
|
_, err := fc.RemoveAll(query)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("RankNianSvc.RemoveAll is err: ", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func init() {
|
||||||
|
rpc.Register(new(RankNianSvc))
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,71 @@
|
||||||
|
package svc
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/rpc"
|
||||||
|
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/mongox"
|
||||||
|
|
||||||
|
"mongo.games.com/game/dao"
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
)
|
||||||
|
|
||||||
|
var RedPacketSvc = new(RedPacketService)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
rpc.Register(RedPacketSvc)
|
||||||
|
}
|
||||||
|
|
||||||
|
type RedPacketService struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketService) GetAll(plt *string, res *[]*model.RedPacket) error {
|
||||||
|
d, err := dao.GetRedPacket(*plt)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
list, err := d.GetAll()
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("RedPacketService.GetAll error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
*res = list
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketService) UpdateAll(req *model.UpdateRedPacketAllReq, res *bool) error {
|
||||||
|
d, err := mongox.GetDao(req.Plt, dao.NewRedPacket)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = d.UpdateAll(req.List)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("RedPacketService.UpdateAll error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
*res = true
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketService) GetHistory(req *model.GetRedPacketHistoryReq, res *[]*model.RedPacketHistory) error {
|
||||||
|
d, err := dao.GetRedPacketHistory(req.Plt)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
list, err := d.GetHistory(req.Snid, req.Cid)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("RedPacketService.GetHistory error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
*res = list
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -54,6 +54,10 @@ func (svc *FriendSvc) QueryFriendByKey(args *model.FriendByKey, ret *model.Frien
|
||||||
if fc == nil {
|
if fc == nil {
|
||||||
return FriendColError
|
return FriendColError
|
||||||
}
|
}
|
||||||
|
if ret == nil {
|
||||||
|
ret = &model.FriendRet{}
|
||||||
|
ret.Fri = &model.Friend{}
|
||||||
|
}
|
||||||
err := fc.Find(bson.M{"platform": args.Platform, "snid": args.SnId}).One(&ret.Fri)
|
err := fc.Find(bson.M{"platform": args.Platform, "snid": args.SnId}).One(&ret.Fri)
|
||||||
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
if err != nil && !errors.Is(err, mgo.ErrNotFound) {
|
||||||
logger.Logger.Error("QueryFriendByKey is err: ", err)
|
logger.Logger.Error("QueryFriendByKey is err: ", err)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ import (
|
||||||
"reflect"
|
"reflect"
|
||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
newMongo "go.mongodb.org/mongo-driver/mongo"
|
newMongo "go.mongodb.org/mongo-driver/mongo"
|
||||||
|
|
@ -68,6 +69,7 @@ func PlayerDelBackupDataCollection(plt string) *mongo.Collection {
|
||||||
}
|
}
|
||||||
|
|
||||||
type PlayerDataSvc struct {
|
type PlayerDataSvc struct {
|
||||||
|
mu sync.Mutex // 互斥锁
|
||||||
}
|
}
|
||||||
|
|
||||||
func (svc *PlayerDataSvc) InsertPlayerData(args *model.InsertPlayerDataParam, ret *model.PlayerDataRet) (err error) {
|
func (svc *PlayerDataSvc) InsertPlayerData(args *model.InsertPlayerDataParam, ret *model.PlayerDataRet) (err error) {
|
||||||
|
|
@ -323,6 +325,8 @@ func SavePlayerData(pd *model.PlayerData) (err error) {
|
||||||
* 保存玩家的全部信息
|
* 保存玩家的全部信息
|
||||||
*/
|
*/
|
||||||
func (svc *PlayerDataSvc) SavePlayerData(pd *model.PlayerData, ret *bool) (err error) {
|
func (svc *PlayerDataSvc) SavePlayerData(pd *model.PlayerData, ret *bool) (err error) {
|
||||||
|
svc.mu.Lock()
|
||||||
|
defer svc.mu.Unlock()
|
||||||
err = SavePlayerData(pd)
|
err = SavePlayerData(pd)
|
||||||
*ret = err == nil
|
*ret = err == nil
|
||||||
return
|
return
|
||||||
|
|
|
||||||
|
|
@ -49,4 +49,11 @@ const (
|
||||||
ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置
|
ETCDKEY_PopUpWindow = "/game/PopUpWindowConfig" //弹窗配置
|
||||||
ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置
|
ETCDKEY_LotteryConfig = "/game/lottery" //抽奖配置
|
||||||
ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置
|
ETCDKEY_LotteryUser = "/game/user_lottery" //抽奖用户必中配置
|
||||||
|
ETCDKEY_PigBankDiamond = "/game/pigbank_diamond" //存钱罐消耗获得
|
||||||
|
ETCDKEY_PigBankProp = "/game/pigbank_prop" //存钱罐属性
|
||||||
|
ETCDKEY_NianConfig = "/game/activity_nian" //年兽活动配置
|
||||||
|
ETCDKEY_NianRankConfig = "/game/activity_nian_rank" //年兽排行榜配置
|
||||||
|
KeyRedPacket = "/game/act_redpacket" //红包配置
|
||||||
|
KeyActConsume = "/game/act_consume" //累计消耗活动配置
|
||||||
|
KeyActPushCoin = "/game/act_pushcoin" //推金币活动配置
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,11 @@
|
||||||
|
package pushcoin
|
||||||
|
|
||||||
|
const (
|
||||||
|
GameStatePlay = iota
|
||||||
|
GameStateMax
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
PowerMax = 700000
|
||||||
|
PowerInit = 400000
|
||||||
|
)
|
||||||
|
|
@ -29,6 +29,10 @@ func init() {
|
||||||
etcd.Register(etcd.ETCDKEY_SKin, webapi.SkinConfig{}, platformConfigEtcd)
|
etcd.Register(etcd.ETCDKEY_SKin, webapi.SkinConfig{}, platformConfigEtcd)
|
||||||
// 娃娃机配置
|
// 娃娃机配置
|
||||||
etcd.Register(etcd.ETCDKEY_MACHINE, webapi.MachineConfig{}, platformConfigEtcd)
|
etcd.Register(etcd.ETCDKEY_MACHINE, webapi.MachineConfig{}, platformConfigEtcd)
|
||||||
|
// 存钱罐消耗获得
|
||||||
|
etcd.Register(etcd.ETCDKEY_PigBankDiamond, webapi.GamePigBankDiamondConfig{}, platformConfigEtcd)
|
||||||
|
// 存钱罐属性值
|
||||||
|
etcd.Register(etcd.ETCDKEY_PigBankProp, webapi.GamePigBankPropConfig{}, platformConfigEtcd)
|
||||||
}
|
}
|
||||||
|
|
||||||
func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
|
func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
|
||||||
|
|
@ -51,6 +55,10 @@ func platformConfigEtcd(ctx context.Context, completeKey string, isInit bool, ev
|
||||||
case *webapi.ItemConfig:
|
case *webapi.ItemConfig:
|
||||||
ConfigMgrInst.GetConfig(d.Platform).ItemConfig = d
|
ConfigMgrInst.GetConfig(d.Platform).ItemConfig = d
|
||||||
srvdata.GameItemMgr.SetConfig(d)
|
srvdata.GameItemMgr.SetConfig(d)
|
||||||
|
case *webapi.GamePigBankDiamondConfig:
|
||||||
|
ConfigMgrInst.GetConfig(d.Platform).GamePigBankDiamondConfig = d
|
||||||
|
case *webapi.GamePigBankPropConfig:
|
||||||
|
ConfigMgrInst.GetConfig(d.Platform).GamePigBankPropConfig = d
|
||||||
default:
|
default:
|
||||||
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
|
logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1243,12 +1243,18 @@ func (this *Player) UpdatePigBankCoin(gainTexCoin int64) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 渠道开关
|
||||||
|
if !ConfigMgrInst.IsOn(this.Platform, common.ChannelSwitchPigBankCoin, this.LastChannel) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if this.PlayerData.WelfData == nil || this.PlayerData.WelfData.PigBank == nil {
|
if this.PlayerData.WelfData == nil || this.PlayerData.WelfData.PigBank == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
fGetPropValue := func(propName string) int64 {
|
fGetPropValue := func(propName string) int64 {
|
||||||
pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr()
|
//pool := srvdata.PBDB_Pigbank_PropMgr.Datas.GetArr()
|
||||||
|
pool := ConfigMgrInst.GetConfig(this.Platform).GamePigBankPropConfig.PropInfo
|
||||||
for _, PropItem := range pool {
|
for _, PropItem := range pool {
|
||||||
if PropItem.PorpName == propName {
|
if PropItem.PorpName == propName {
|
||||||
return int64(PropItem.PropValue)
|
return int64(PropItem.PropValue)
|
||||||
|
|
@ -1257,7 +1263,9 @@ func (this *Player) UpdatePigBankCoin(gainTexCoin int64) {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
BankCoinMax := int64(0)
|
BankCoinMax := int64(0)
|
||||||
for _, data := range srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr() {
|
// pool := srvdata.PBDB_PigBank_DiamondMgr.Datas.GetArr()
|
||||||
|
pool := ConfigMgrInst.GetConfig(this.Platform).GamePigBankDiamondConfig.DiamondInfo
|
||||||
|
for _, data := range pool {
|
||||||
if this.WelfData.PigBank.DayBuyTimes+1 >= data.BuyCountMin && this.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax {
|
if this.WelfData.PigBank.DayBuyTimes+1 >= data.BuyCountMin && this.WelfData.PigBank.DayBuyTimes+1 <= data.BuyCountMax {
|
||||||
BankCoinMax = int64(data.MaxGold)
|
BankCoinMax = int64(data.MaxGold)
|
||||||
break
|
break
|
||||||
|
|
|
||||||
|
|
@ -62,6 +62,14 @@ func (nsa *NpcServerAgent) SyncDBGameFree(roomId int, DBGameFree *server.DB_Game
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (nsa *NpcServerAgent) DestroyScene(sceneId int) {
|
||||||
|
pack := &server.GRDestroyScene{
|
||||||
|
SceneId: proto.Int(sceneId),
|
||||||
|
}
|
||||||
|
nsa.sendPacket(int(server.SSPacketID_PACKET_GR_DESTROYSCENE), pack)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
// Invite 邀请机器人
|
// Invite 邀请机器人
|
||||||
func (nsa *NpcServerAgent) Invite(roomId, cnt int, gameFreeId int32) bool {
|
func (nsa *NpcServerAgent) Invite(roomId, cnt int, gameFreeId int32) bool {
|
||||||
//logger.Logger.Trace("(nsa *NpcServerAgent) Invite", roomId, cnt, isAgent, gameFreeId)
|
//logger.Logger.Trace("(nsa *NpcServerAgent) Invite", roomId, cnt, isAgent, gameFreeId)
|
||||||
|
|
|
||||||
|
|
@ -908,6 +908,9 @@ func (this *Scene) Destroy(force bool) {
|
||||||
}
|
}
|
||||||
proto.SetDefaults(pack)
|
proto.SetDefaults(pack)
|
||||||
this.SendToWorld(int(server.SSPacketID_PACKET_GW_DESTROYSCENE), pack)
|
this.SendToWorld(int(server.SSPacketID_PACKET_GW_DESTROYSCENE), pack)
|
||||||
|
|
||||||
|
NpcServerAgentSingleton.DestroyScene(int(this.SceneId))
|
||||||
|
|
||||||
logger.Logger.Trace("(this *Scene) Destroy(force bool) isCompleted", isCompleted)
|
logger.Logger.Trace("(this *Scene) Destroy(force bool) isCompleted", isCompleted)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2094,11 +2097,6 @@ func (this *Scene) Statistics(param *StaticParam) {
|
||||||
|
|
||||||
logger.Logger.Tracef("Statistics gameId:%v wbLevel:%v gain:%v addGain:%v", this.GameId, wbLevel, param.Gain, addGain)
|
logger.Logger.Tracef("Statistics gameId:%v wbLevel:%v gain:%v addGain:%v", this.GameId, wbLevel, param.Gain, addGain)
|
||||||
|
|
||||||
// 比赛场,私人房不统计
|
|
||||||
if this.IsMatchScene() || this.IsPrivateScene() {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
var totalIn int64
|
var totalIn int64
|
||||||
var totalOut int64
|
var totalOut int64
|
||||||
now := time.Now()
|
now := time.Now()
|
||||||
|
|
@ -2181,6 +2179,40 @@ func (this *Scene) Statistics(param *StaticParam) {
|
||||||
statics = append(statics, &data.Statics)
|
statics = append(statics, &data.Statics)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
f := func(list []*model.PlayerGameStatics) {
|
||||||
|
for _, data := range list {
|
||||||
|
if data != nil {
|
||||||
|
if !this.IsMatchScene() && !this.IsPrivateScene() { // 比赛场,私人房不统计
|
||||||
|
data.TotalIn += totalIn
|
||||||
|
data.TotalOut += totalOut
|
||||||
|
data.Tax += param.GainTax
|
||||||
|
}
|
||||||
|
if param.IsAddTimes {
|
||||||
|
data.GameTimes++
|
||||||
|
if param.Gain > 0 {
|
||||||
|
data.WinGameTimes++
|
||||||
|
data.WinGameTimesNum++
|
||||||
|
data.LoseGameTimesNum = 0
|
||||||
|
} else if param.Gain < 0 {
|
||||||
|
data.LoseGameTimes++
|
||||||
|
data.LoseGameTimesNum++
|
||||||
|
data.WinGameTimesNum = 0
|
||||||
|
} else {
|
||||||
|
data.DrawGameTimes++
|
||||||
|
data.WinGameTimesNum = 0
|
||||||
|
data.LoseGameTimesNum = 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
f(statics)
|
||||||
|
statics = statics[:0]
|
||||||
|
|
||||||
|
if this.IsMatchScene() || this.IsPrivateScene() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// 新手输赢统计
|
// 新手输赢统计
|
||||||
if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, int(this.GameId)) && isControl && wbLevel == 0 && isNovice {
|
if !model.GameParamData.CloseNovice && !common.InSliceInt(model.GameParamData.CloseNoviceGame, int(this.GameId)) && isControl && wbLevel == 0 && isNovice {
|
||||||
keyNoviceGameId := common.GetKeyNoviceGameId(int(this.GameId))
|
keyNoviceGameId := common.GetKeyNoviceGameId(int(this.GameId))
|
||||||
|
|
@ -2249,29 +2281,8 @@ func (this *Scene) Statistics(param *StaticParam) {
|
||||||
logger.Logger.Tracef("Statistics PlayerPool gameId:%v wbLevel:%v gain:%v addGain:%v", this.GameId, wbLevel, param.Gain, addGain)
|
logger.Logger.Tracef("Statistics PlayerPool gameId:%v wbLevel:%v gain:%v addGain:%v", this.GameId, wbLevel, param.Gain, addGain)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, data := range statics {
|
f(statics)
|
||||||
if data != nil {
|
statics = statics[:0]
|
||||||
data.TotalIn += totalIn
|
|
||||||
data.TotalOut += totalOut
|
|
||||||
data.Tax += param.GainTax
|
|
||||||
if param.IsAddTimes {
|
|
||||||
data.GameTimes++
|
|
||||||
if param.Gain > 0 {
|
|
||||||
data.WinGameTimes++
|
|
||||||
data.WinGameTimesNum++
|
|
||||||
data.LoseGameTimesNum = 0
|
|
||||||
} else if param.Gain < 0 {
|
|
||||||
data.LoseGameTimes++
|
|
||||||
data.LoseGameTimesNum++
|
|
||||||
data.WinGameTimesNum = 0
|
|
||||||
} else {
|
|
||||||
data.DrawGameTimes++
|
|
||||||
data.WinGameTimesNum = 0
|
|
||||||
data.LoseGameTimesNum = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家身上元数据
|
// 玩家身上元数据
|
||||||
if param.IsAddTimes {
|
if param.IsAddTimes {
|
||||||
|
|
|
||||||
|
|
@ -46,13 +46,6 @@ type ScenePolicy interface {
|
||||||
CanAddCoin(s *Scene, p *Player, val int64) bool
|
CanAddCoin(s *Scene, p *Player, val int64) bool
|
||||||
//当前状态能否换桌
|
//当前状态能否换桌
|
||||||
CanChangeCoinScene(s *Scene, p *Player) bool
|
CanChangeCoinScene(s *Scene, p *Player) bool
|
||||||
//创建场景扩展数据
|
|
||||||
CreateSceneExData(s *Scene) interface{}
|
|
||||||
//创建玩家扩展数据
|
|
||||||
CreatePlayerExData(s *Scene, p *Player) interface{}
|
|
||||||
//
|
|
||||||
PacketGameData(s *Scene) interface{}
|
|
||||||
InterventionGame(s *Scene, data interface{}) interface{}
|
|
||||||
//通知分场状态
|
//通知分场状态
|
||||||
NotifyGameState(s *Scene)
|
NotifyGameState(s *Scene)
|
||||||
|
|
||||||
|
|
@ -243,10 +236,6 @@ func (bsp *BaseScenePolicy) IsCanForceStart(s *Scene) bool
|
||||||
func (bsp *BaseScenePolicy) ForceStart(s *Scene) {}
|
func (bsp *BaseScenePolicy) ForceStart(s *Scene) {}
|
||||||
func (bsp *BaseScenePolicy) CanAddCoin(s *Scene, p *Player, val int64) bool { return true } /*百人牛牛,百人金华多倍结算,且当前是减币的情况下,需要判断*/
|
func (bsp *BaseScenePolicy) CanAddCoin(s *Scene, p *Player, val int64) bool { return true } /*百人牛牛,百人金华多倍结算,且当前是减币的情况下,需要判断*/
|
||||||
func (bsp *BaseScenePolicy) CanChangeCoinScene(s *Scene, p *Player) bool { return false }
|
func (bsp *BaseScenePolicy) CanChangeCoinScene(s *Scene, p *Player) bool { return false }
|
||||||
func (bsp *BaseScenePolicy) CreateSceneExData(s *Scene) interface{} { return false }
|
|
||||||
func (bsp *BaseScenePolicy) CreatePlayerExData(s *Scene, p *Player) interface{} { return false }
|
|
||||||
func (bsp *BaseScenePolicy) PacketGameData(s *Scene) interface{} { return nil }
|
|
||||||
func (bsp *BaseScenePolicy) InterventionGame(s *Scene, data interface{}) interface{} { return nil }
|
|
||||||
func (bsp *BaseScenePolicy) NotifyGameState(s *Scene) {}
|
func (bsp *BaseScenePolicy) NotifyGameState(s *Scene) {}
|
||||||
func (bsp *BaseScenePolicy) GetJackPotVal(s *Scene) int64 { return 0 }
|
func (bsp *BaseScenePolicy) GetJackPotVal(s *Scene) int64 { return 0 }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
package thirteen
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/game/common"
|
||||||
|
"mongo.games.com/game/gamesrv/base"
|
||||||
|
"mongo.games.com/game/protocol/pushcoin"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
common.Register(int(pushcoin.PushCoinPacketID_PACKET_CSPushCoinPlayerOp), &pushcoin.CSPushCoinPlayerOp{}, CSPushCoinPlayerOp)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
||||||
|
logger.Logger.Trace("CSPlayerOpHandler Process recv ", data)
|
||||||
|
if msg, ok := data.(*pushcoin.CSPushCoinPlayerOp); ok {
|
||||||
|
p := base.PlayerMgrSington.GetPlayer(sid)
|
||||||
|
if p == nil {
|
||||||
|
logger.Logger.Warn("CSPlayerOpHandler p == nil")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
scene := p.GetScene()
|
||||||
|
if scene == nil {
|
||||||
|
logger.Logger.Warn("CSPlayerOpHandler p.scene == nil")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if scene.KeyGameDif != common.GameDifPushCoin {
|
||||||
|
logger.Logger.Error("CSPlayerOpHandler gameId Error ", scene.GameId)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if !scene.HasPlayer(p) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
sp := scene.GetScenePolicy()
|
||||||
|
if sp != nil {
|
||||||
|
sp.OnPlayerOp(scene, p, int(msg.GetOpCode()), msg.GetOpParam())
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
package thirteen
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/game/gamesrv/base"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GameData struct {
|
||||||
|
Shake int32 // 震动次数
|
||||||
|
Refresh int64 // 刷新次数
|
||||||
|
Power int64 // 能量值
|
||||||
|
Base int64 // 底注
|
||||||
|
}
|
||||||
|
|
||||||
|
type PlayerEx struct {
|
||||||
|
*base.Player //玩家信息
|
||||||
|
*GameData
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPushCoinPlayerData(p *base.Player, data *GameData) *PlayerEx {
|
||||||
|
playerEx := &PlayerEx{
|
||||||
|
Player: p,
|
||||||
|
GameData: data,
|
||||||
|
}
|
||||||
|
return playerEx
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,74 @@
|
||||||
|
package thirteen
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/game/common"
|
||||||
|
rule "mongo.games.com/game/gamerule/pushcoin"
|
||||||
|
"mongo.games.com/game/gamesrv/base"
|
||||||
|
"mongo.games.com/game/protocol/pushcoin"
|
||||||
|
"mongo.games.com/game/srvdata"
|
||||||
|
)
|
||||||
|
|
||||||
|
type SceneEx struct {
|
||||||
|
*base.Scene //场景
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPushCoinSceneData(s *base.Scene) *SceneEx {
|
||||||
|
sceneEx := &SceneEx{
|
||||||
|
Scene: s,
|
||||||
|
}
|
||||||
|
return sceneEx
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *SceneEx) CreateRoomInfoPacket(s *base.Scene, p *base.Player) *pushcoin.SCPushCoinRoomInfo {
|
||||||
|
playerEx, ok := p.ExtraData.(*PlayerEx)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
roomInfo := &pushcoin.SCPushCoinRoomInfo{
|
||||||
|
RoomId: int32(s.GetSceneId()),
|
||||||
|
GameId: s.GameId,
|
||||||
|
RoomMode: int32(s.GetSceneMode()),
|
||||||
|
Params: common.CopySliceInt64ToInt32(s.GetParams()),
|
||||||
|
State: int32(s.GetSceneState().GetState()),
|
||||||
|
TimeOut: int32(s.GetSceneState().GetTimeout(s)),
|
||||||
|
BetList: s.GetDBGameFree().GetOtherIntParams(),
|
||||||
|
}
|
||||||
|
|
||||||
|
player := pushcoin.PushCoinPlayerData{
|
||||||
|
Name: p.Name,
|
||||||
|
SnId: p.SnId,
|
||||||
|
Head: p.Head,
|
||||||
|
Sex: p.Sex,
|
||||||
|
Coin: p.Coin,
|
||||||
|
Flag: int32(p.Flags),
|
||||||
|
VIP: p.VIP,
|
||||||
|
RoleId: p.Roles.ModId,
|
||||||
|
Level: p.Level,
|
||||||
|
Exp: p.Exp,
|
||||||
|
ShakeTimes: playerEx.Shake,
|
||||||
|
BaseCoin: playerEx.Base,
|
||||||
|
PowerLine: playerEx.Power,
|
||||||
|
PowerLineMax: rule.PowerMax,
|
||||||
|
RefreshTimes: playerEx.Refresh,
|
||||||
|
}
|
||||||
|
if p.Roles != nil {
|
||||||
|
player.RoleId = p.Roles.ModId
|
||||||
|
}
|
||||||
|
if p.Skin != nil {
|
||||||
|
player.SkinId = p.Skin.ModId
|
||||||
|
}
|
||||||
|
|
||||||
|
roomInfo.Players = append(roomInfo.Players, &player)
|
||||||
|
|
||||||
|
for _, v := range srvdata.PBDB_PropExchangeMgr.Datas.Arr {
|
||||||
|
if v.GetGroup() == 2 {
|
||||||
|
roomInfo.ExchangeList = append(roomInfo.ExchangeList, &pushcoin.ExchangeInfo{
|
||||||
|
Id: v.GetId(),
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return roomInfo
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,332 @@
|
||||||
|
package thirteen
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mongo.games.com/goserver/core"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
|
||||||
|
"mongo.games.com/game/common"
|
||||||
|
rule "mongo.games.com/game/gamerule/pushcoin"
|
||||||
|
"mongo.games.com/game/gamesrv/base"
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
"mongo.games.com/game/protocol/pushcoin"
|
||||||
|
)
|
||||||
|
|
||||||
|
var PolicySingleton = &Policy{}
|
||||||
|
|
||||||
|
type Policy struct {
|
||||||
|
base.BaseScenePolicy
|
||||||
|
states [rule.GameStateMax]base.SceneState
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnStart(s *base.Scene) {
|
||||||
|
logger.Logger.Trace("(this *PushCoinPolicy) OnStart, sceneId=", s.GetSceneId())
|
||||||
|
sceneEx := NewPushCoinSceneData(s)
|
||||||
|
if sceneEx != nil {
|
||||||
|
s.ExtraData = sceneEx
|
||||||
|
s.ChangeSceneState(rule.GameStatePlay)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnStop(s *base.Scene) {
|
||||||
|
logger.Logger.Trace("(this *Policy) OnStop , sceneId=", s.GetSceneId())
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnTick(s *base.Scene) {
|
||||||
|
if s == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if s.SceneState != nil {
|
||||||
|
s.SceneState.OnTick(s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerEnter(s *base.Scene, p *base.Player) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
sceneEx, ok := s.ExtraData.(*SceneEx)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := p.GDatas[s.KeyGamefreeId]
|
||||||
|
if data == nil {
|
||||||
|
data = &model.PlayerGameInfo{}
|
||||||
|
p.GDatas[s.KeyGamefreeId] = data
|
||||||
|
}
|
||||||
|
|
||||||
|
gamedata := &GameData{}
|
||||||
|
if data.DataEx != nil {
|
||||||
|
err := json.Unmarshal(data.DataEx, gamedata)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("OnPlayerEnter, json.Unmarshal error, err=", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// 底注
|
||||||
|
baseCoins := s.GetDBGameFree().GetOtherIntParams()
|
||||||
|
if len(baseCoins) > 0 {
|
||||||
|
gamedata.Base = baseCoins[0]
|
||||||
|
} else {
|
||||||
|
gamedata.Base = 5000
|
||||||
|
}
|
||||||
|
gamedata.Power = rule.PowerInit
|
||||||
|
}
|
||||||
|
|
||||||
|
p.ExtraData = NewPushCoinPlayerData(p, gamedata)
|
||||||
|
//给自己发送房间信息
|
||||||
|
this.SendRoomInfo(s, p, sceneEx)
|
||||||
|
s.FirePlayerEvent(p, base.PlayerEventEnter, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerLeave(s *base.Scene, p *base.Player, reason int) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerLeave, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
|
||||||
|
playerEx, ok := p.ExtraData.(*PlayerEx)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := p.GDatas[s.KeyGamefreeId]
|
||||||
|
if data == nil {
|
||||||
|
data = &model.PlayerGameInfo{}
|
||||||
|
p.GDatas[s.KeyGamefreeId] = data
|
||||||
|
}
|
||||||
|
|
||||||
|
b, err := json.Marshal(playerEx.GameData)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("OnPlayerLeave, json.Marshal error, err=", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
data.DataEx = b
|
||||||
|
|
||||||
|
s.FirePlayerEvent(p, base.PlayerEventLeave, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerDropLine(s *base.Scene, p *base.Player) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
s.FirePlayerEvent(p, base.PlayerEventDropLine, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerRehold(s *base.Scene, p *base.Player) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
sceneEx, ok := s.ExtraData.(*SceneEx)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.SendRoomInfo(s, p, sceneEx)
|
||||||
|
s.FirePlayerEvent(p, base.PlayerEventRehold, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerReturn(s *base.Scene, p *base.Player) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
sceneEx, ok := s.ExtraData.(*SceneEx)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.SendRoomInfo(s, p, sceneEx)
|
||||||
|
s.FirePlayerEvent(p, base.PlayerEventReturn, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params)
|
||||||
|
if s.SceneState != nil {
|
||||||
|
p.LastOPTimer = time.Now()
|
||||||
|
return s.SceneState.OnPlayerOp(s, p, opcode, params)
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " eventcode=", evtcode, " params=", params)
|
||||||
|
if s.SceneState != nil {
|
||||||
|
s.SceneState.OnPlayerEvent(s, p, evtcode, params)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnAudienceEnter(s *base.Scene, p *base.Player) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnAudienceEnter, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
if sceneEx, ok := s.ExtraData.(*SceneEx); ok {
|
||||||
|
//给自己发送房间信息
|
||||||
|
this.SendRoomInfo(s, p, sceneEx)
|
||||||
|
s.FirePlayerEvent(p, base.AudienceEventEnter, nil)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnAudienceLeave(s *base.Scene, p *base.Player, reason int) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnAudienceLeave, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
s.FirePlayerEvent(p, base.AudienceEventLeave, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnAudienceDropLine(s *base.Scene, p *base.Player) {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger.Logger.Trace("(this *Policy) OnAudienceDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
||||||
|
s.AudienceLeave(p, common.PlayerLeaveReason_DropLine)
|
||||||
|
s.FirePlayerEvent(p, base.AudienceEventDropLine, nil)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) OnAudienceSit(s *base.Scene, p *base.Player) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) IsCompleted(s *base.Scene) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) IsCanForceStart(s *base.Scene) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) ForceStart(s *base.Scene) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
|
||||||
|
if s == nil || p == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
if s.SceneState != nil {
|
||||||
|
return s.SceneState.CanChangeCoinScene(s, p)
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) SendRoomInfo(s *base.Scene, p *base.Player, sceneEx *SceneEx) {
|
||||||
|
pack := sceneEx.CreateRoomInfoPacket(s, p)
|
||||||
|
p.SendToClient(int(pushcoin.PushCoinPacketID_PACKET_SCPushCoinRoomInfo), pack)
|
||||||
|
}
|
||||||
|
|
||||||
|
//=====================================
|
||||||
|
// StateGaming 游戏中
|
||||||
|
//=====================================
|
||||||
|
|
||||||
|
type StateGaming struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) OnLeave(s *base.Scene) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) GetState() int {
|
||||||
|
return rule.GameStatePlay
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) CanChangeTo(s base.SceneState) bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) GetTimeout(s *base.Scene) int {
|
||||||
|
if sceneEx, ok := s.GetExtraData().(*SceneEx); ok {
|
||||||
|
return int(time.Now().Sub(sceneEx.StateStartTime) / time.Second)
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) OnEnter(s *base.Scene) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) OnTick(s *base.Scene) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *StateGaming) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
|
||||||
|
logger.Logger.Trace("(this *StateGaming) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params)
|
||||||
|
_, ok := s.ExtraData.(*SceneEx)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
_, ok = p.ExtraData.(*PlayerEx)
|
||||||
|
if !ok {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
pack := &pushcoin.SCPushCoinPlayerOp{
|
||||||
|
OpRetCode: pushcoin.OpResultCode_OPRC_Error,
|
||||||
|
OpCode: pushcoin.OpCodes(opcode),
|
||||||
|
}
|
||||||
|
|
||||||
|
switch pushcoin.OpCodes(opcode) {
|
||||||
|
case pushcoin.OpCodes_OP_Bet:
|
||||||
|
|
||||||
|
case pushcoin.OpCodes_OP_Gain:
|
||||||
|
|
||||||
|
case pushcoin.OpCodes_OP_Shake:
|
||||||
|
|
||||||
|
case pushcoin.OpCodes_OP_Refresh:
|
||||||
|
|
||||||
|
case pushcoin.OpCodes_OP_Exchange:
|
||||||
|
|
||||||
|
case pushcoin.OpCodes_OP_Draw:
|
||||||
|
|
||||||
|
default:
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
p.SendToClient(int(pushcoin.PushCoinPacketID_PACKET_SCPushCoinPlayerOp), pack)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) RegisteSceneState(state base.SceneState) {
|
||||||
|
if state == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
id := state.GetState()
|
||||||
|
if id < 0 || id >= rule.GameStateMax {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.states[id] = state
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Policy) GetSceneState(s *base.Scene, stateid int) base.SceneState {
|
||||||
|
if stateid >= 0 && stateid < rule.GameStateMax {
|
||||||
|
return this.states[stateid]
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
PolicySingleton.RegisteSceneState(&StateGaming{})
|
||||||
|
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
||||||
|
base.RegisteScenePolicy(common.GameId_PushCoin, 0, PolicySingleton)
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -73,6 +73,7 @@ type TienLenSceneData struct {
|
||||||
RoundLogId []string // 每局牌局记录id
|
RoundLogId []string // 每局牌局记录id
|
||||||
CustomLogSave bool // 是否已经保存日志
|
CustomLogSave bool // 是否已经保存日志
|
||||||
PlayerAward map[int32]*[]*model.Item // 房卡场最终奖励
|
PlayerAward map[int32]*[]*model.Item // 房卡场最终奖励
|
||||||
|
bill *tienlen.SCTienLenGameBilled
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTienLenSceneData(s *base.Scene) *TienLenSceneData {
|
func NewTienLenSceneData(s *base.Scene) *TienLenSceneData {
|
||||||
|
|
|
||||||
|
|
@ -427,6 +427,7 @@ func TienLenCreateRoomInfoPacket(s *base.Scene, p *base.Player, sceneEx *TienLen
|
||||||
NumOfGames: proto.Int(sceneEx.NumOfGames),
|
NumOfGames: proto.Int(sceneEx.NumOfGames),
|
||||||
TotalOfGames: sceneEx.TotalOfGames,
|
TotalOfGames: sceneEx.TotalOfGames,
|
||||||
CurOpIdx: proto.Int(-1),
|
CurOpIdx: proto.Int(-1),
|
||||||
|
IsSmallCard: sceneEx.FindWinPos() == -1,
|
||||||
MasterSnid: proto.Int32(sceneEx.masterSnid),
|
MasterSnid: proto.Int32(sceneEx.masterSnid),
|
||||||
AudienceNum: proto.Int(s.GetAudiencesNum()),
|
AudienceNum: proto.Int(s.GetAudiencesNum()),
|
||||||
BaseScore: proto.Int32(s.GetBaseScore()),
|
BaseScore: proto.Int32(s.GetBaseScore()),
|
||||||
|
|
@ -1057,12 +1058,14 @@ func (this *SceneHandCardStateTienLen) OnEnter(s *base.Scene) {
|
||||||
}
|
}
|
||||||
if len(sceneEx.tianHuSnids) == 0 { //没有天胡玩家
|
if len(sceneEx.tianHuSnids) == 0 { //没有天胡玩家
|
||||||
//有赢家,赢家先出;无赢家手持最小牌先
|
//有赢家,赢家先出;无赢家手持最小牌先
|
||||||
pos := int32(sceneEx.FindWinPos())
|
winPos := int32(sceneEx.FindWinPos())
|
||||||
if pos == -1 {
|
pos := winPos
|
||||||
|
if winPos == -1 {
|
||||||
pos = sceneEx.startOpPos
|
pos = sceneEx.startOpPos
|
||||||
}
|
}
|
||||||
pack := &tienlen.SCTienLenFirstOpPos{
|
pack := &tienlen.SCTienLenFirstOpPos{
|
||||||
Pos: proto.Int32(pos),
|
Pos: pos,
|
||||||
|
IsSmallCard: winPos == -1,
|
||||||
}
|
}
|
||||||
proto.SetDefaults(pack)
|
proto.SetDefaults(pack)
|
||||||
sceneEx.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenFirstOpPos), pack, 0)
|
sceneEx.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenFirstOpPos), pack, 0)
|
||||||
|
|
@ -2623,6 +2626,7 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
|
||||||
proto.SetDefaults(pack)
|
proto.SetDefaults(pack)
|
||||||
s.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenGameBilled), pack, 0)
|
s.Broadcast(int(tienlen.TienLenPacketID_PACKET_SCTienLenGameBilled), pack, 0)
|
||||||
logger.Logger.Trace("TienLenPacketID_PACKET_SCTienLenGameBilled gameFreeId:", sceneEx.GetGameFreeId(), ";pack:", pack)
|
logger.Logger.Trace("TienLenPacketID_PACKET_SCTienLenGameBilled gameFreeId:", sceneEx.GetGameFreeId(), ";pack:", pack)
|
||||||
|
sceneEx.bill = pack
|
||||||
|
|
||||||
if sceneEx.IsCustom() && sceneEx.TotalOfGames > 0 {
|
if sceneEx.IsCustom() && sceneEx.TotalOfGames > 0 {
|
||||||
for _, v := range tienlenType.PlayerData {
|
for _, v := range tienlenType.PlayerData {
|
||||||
|
|
@ -2932,6 +2936,16 @@ func (this *SceneBilledStateTienLen) OnPlayerOp(s *base.Scene, p *base.Player, o
|
||||||
// 玩家事件
|
// 玩家事件
|
||||||
func (this *SceneBilledStateTienLen) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
func (this *SceneBilledStateTienLen) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
||||||
this.SceneBaseStateTienLen.OnPlayerEvent(s, p, evtcode, params)
|
this.SceneBaseStateTienLen.OnPlayerEvent(s, p, evtcode, params)
|
||||||
|
sceneEx, ok := s.GetExtraData().(*TienLenSceneData)
|
||||||
|
if !ok {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
switch evtcode {
|
||||||
|
case base.PlayerEventRehold:
|
||||||
|
if sceneEx.bill != nil && sceneEx.IsRankMatch() {
|
||||||
|
p.SendToClient(int(tienlen.TienLenPacketID_PACKET_SCTienLenGameBilled), sceneEx.bill)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *SceneBilledStateTienLen) OnTick(s *base.Scene) {
|
func (this *SceneBilledStateTienLen) OnTick(s *base.Scene) {
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,92 @@ func WorldSrvApi(rw http.ResponseWriter, req *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func DebugSrvApi(rw http.ResponseWriter, req *http.Request) {
|
||||||
|
|
||||||
|
if !common.Config.IsDevMode {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
defer utils.DumpStackIfPanic("api.DebugSrvApi")
|
||||||
|
logger.Logger.Info("DebugSrvApi receive:", req.URL.Path, req.URL.RawQuery)
|
||||||
|
|
||||||
|
if common.RequestCheck(req, model.GameParamData.WhiteHttpAddr) == false {
|
||||||
|
logger.Logger.Info("RemoteAddr [%v] require api.", req.RemoteAddr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
data, err := io.ReadAll(req.Body)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Info("Body err.", err)
|
||||||
|
webApiResponse(rw, nil /*map[string]interface{}{webapi.RESPONSE_STATE: webapi.STATE_ERR, webapi.RESPONSE_ERRMSG: "Post data is null!"}*/)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
params := make(map[string]string)
|
||||||
|
json.Unmarshal(data, ¶ms)
|
||||||
|
|
||||||
|
startTime := time.Now().UnixNano()
|
||||||
|
|
||||||
|
var stats *ApiStats
|
||||||
|
if v, exist := WebApiStats.Load(req.URL.Path); exist {
|
||||||
|
stats = v.(*ApiStats)
|
||||||
|
} else {
|
||||||
|
stats = &ApiStats{}
|
||||||
|
WebApiStats.Store(req.URL.Path, stats)
|
||||||
|
}
|
||||||
|
var rep []byte
|
||||||
|
start := time.Now()
|
||||||
|
res := make(chan []byte, 1)
|
||||||
|
suc := core.CoreObject().SendCommand(&WebApiEvent{req: req, path: req.URL.Path, h: HandlerWrapper(func(event *WebApiEvent, data []byte) bool {
|
||||||
|
logger.Logger.Trace("WorldSrvApi start transcate")
|
||||||
|
tnp := &transact.TransNodeParam{
|
||||||
|
Tt: common.TransTypeWebApi,
|
||||||
|
Ot: transact.TransOwnerType(common.GetSelfSrvType()),
|
||||||
|
Oid: common.GetSelfSrvId(),
|
||||||
|
AreaID: common.GetSelfAreaId(),
|
||||||
|
}
|
||||||
|
tNode := transact.DTCModule.StartTrans(tnp, event, transact.DefaultTransactTimeout) //超时时间30秒
|
||||||
|
if tNode != nil {
|
||||||
|
tNode.TransEnv.SetField(WEBAPI_TRANSACTE_EVENT, event)
|
||||||
|
tNode.Go(core.CoreObject())
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}), body: data, rawQuery: req.URL.RawQuery, res: res}, false)
|
||||||
|
if suc {
|
||||||
|
select {
|
||||||
|
case rep = <-res:
|
||||||
|
if rep != nil {
|
||||||
|
webApiResponse(rw, rep)
|
||||||
|
}
|
||||||
|
case <-time.After(ApiDefaultTimeout):
|
||||||
|
//rep = make(map[string]interface{})
|
||||||
|
//rep[webapi.RESPONSE_STATE] = webapi.STATE_ERR
|
||||||
|
//rep[webapi.RESPONSE_ERRMSG] = "proccess timeout!"
|
||||||
|
webApiResponse(rw, rep)
|
||||||
|
if stats != nil {
|
||||||
|
atomic.AddInt64(&stats.TimeoutTimes, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
webApiResponse(rw, nil)
|
||||||
|
if stats != nil {
|
||||||
|
atomic.AddInt64(&stats.UnreachTimes, 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ps := int64(time.Now().Sub(start) / time.Millisecond)
|
||||||
|
if stats != nil {
|
||||||
|
atomic.AddInt64(&stats.RunTimes, 1)
|
||||||
|
atomic.AddInt64(&stats.TotalRuningTime, ps)
|
||||||
|
if atomic.LoadInt64(&stats.MaxRuningTime) < ps {
|
||||||
|
atomic.StoreInt64(&stats.MaxRuningTime, ps)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
log := model.NewAPILog(req.URL.Path, req.URL.RawQuery, string(data[:]), req.RemoteAddr, string(rep[:]), startTime, ps)
|
||||||
|
mq.Write(log)
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
func init() {
|
func init() {
|
||||||
transact.RegisteHandler(common.TransTypeWebApi, &transact.TransHanderWrapper{
|
transact.RegisteHandler(common.TransTypeWebApi, &transact.TransHanderWrapper{
|
||||||
|
|
@ -262,6 +348,9 @@ func init() {
|
||||||
admin.MyAdminApp.Route("/api/game/exchange_create", WorldSrvApi)
|
admin.MyAdminApp.Route("/api/game/exchange_create", WorldSrvApi)
|
||||||
// 兑换订单列表
|
// 兑换订单列表
|
||||||
admin.MyAdminApp.Route("/api/game/exchange_order", WorldSrvApi)
|
admin.MyAdminApp.Route("/api/game/exchange_order", WorldSrvApi)
|
||||||
|
|
||||||
|
admin.MyAdminApp.Route("/api/platform/debug", DebugSrvApi)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func Stats() map[string]ApiStats {
|
func Stats() map[string]ApiStats {
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,9 @@ const (
|
||||||
OpContinuousPay = 4
|
OpContinuousPay = 4
|
||||||
OpPhoneLottery = 5
|
OpPhoneLottery = 5
|
||||||
OpCollect = 6
|
OpCollect = 6
|
||||||
OpDiamondLottery = 7
|
OpNian = 7
|
||||||
|
OpConsume = 8 // 累计消耗活动
|
||||||
|
OpPushCoin = 9 // 推金币活动
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
@ -163,6 +165,19 @@ type AllConfig struct {
|
||||||
LotteryShows map[int64]*webapi.ShowLottery
|
LotteryShows map[int64]*webapi.ShowLottery
|
||||||
// 竞技馆抽奖必中配置
|
// 竞技馆抽奖必中配置
|
||||||
LotteryUser map[int64]*webapi.UserLottery
|
LotteryUser map[int64]*webapi.UserLottery
|
||||||
|
// 存钱罐消耗获得
|
||||||
|
*webapi.GamePigBankDiamondConfig
|
||||||
|
// 存钱罐属性
|
||||||
|
*webapi.GamePigBankPropConfig
|
||||||
|
//年兽配置
|
||||||
|
*webapi.ActivityNianConfig
|
||||||
|
*webapi.NianRankReward
|
||||||
|
// 红包配置
|
||||||
|
*webapi.RedPacketConfig
|
||||||
|
// 累计消耗活动配置
|
||||||
|
*webapi.ConsumeConfig
|
||||||
|
// 推金币活动配置
|
||||||
|
*webapi.PushCoinConfig
|
||||||
}
|
}
|
||||||
|
|
||||||
type GlobalConfig struct {
|
type GlobalConfig struct {
|
||||||
|
|
@ -536,3 +551,21 @@ func (cm *ConfigMgr) CustomIsOn(plt string, configId int32) bool {
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (cm *ConfigMgr) GetPigBankDiamondArr(plt string) []*webapi.PigBankDiamondInfo {
|
||||||
|
cfg := cm.GetConfig(plt).GamePigBankDiamondConfig
|
||||||
|
if cfg == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg.DiamondInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func (cm *ConfigMgr) GetPigBankPropArr(plt string) []*webapi.PigBankPropInfo {
|
||||||
|
cfg := cm.GetConfig(plt).GamePigBankPropConfig
|
||||||
|
if cfg == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg.PropInfo
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -53,4 +53,5 @@ type BackendPermitTask struct {
|
||||||
TaskType int32 // 任务类型
|
TaskType int32 // 任务类型
|
||||||
Gain []AwardItem // 任务获得奖励
|
Gain []AwardItem // 任务获得奖励
|
||||||
Ts int64 // 时间戳
|
Ts int64 // 时间戳
|
||||||
|
RemainDiamond int64 // 剩余钻石
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -112,6 +112,8 @@ const (
|
||||||
SystemFreeGive_CollectBoxSwap // 卡片礼盒兑换奖励
|
SystemFreeGive_CollectBoxSwap // 卡片礼盒兑换奖励
|
||||||
SystemFreeGive_ClientUpgrade // 客户端升级奖励
|
SystemFreeGive_ClientUpgrade // 客户端升级奖励
|
||||||
SystemFreeGive_Guide // 新手引导奖励
|
SystemFreeGive_Guide // 新手引导奖励
|
||||||
|
SystemFreeGive_NianEveryDayTask // 年兽每日任务
|
||||||
|
SystemFreeGive_NianTask //年兽活动任务
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
SystemFreeGive_CoinType_Coin int32 = iota //金币
|
SystemFreeGive_CoinType_Coin int32 = iota //金币
|
||||||
|
|
@ -132,6 +134,7 @@ const (
|
||||||
ActivityLog_Shop //商城购买
|
ActivityLog_Shop //商城购买
|
||||||
ActivityLog_Exchange //商城兑换
|
ActivityLog_Exchange //商城兑换
|
||||||
ActivityLog_CoinPigBank //金币存钱罐
|
ActivityLog_CoinPigBank //金币存钱罐
|
||||||
|
ActivityLog_NianBuff //年兽领取Buff
|
||||||
)
|
)
|
||||||
|
|
||||||
type PlayerGameCtrlData struct {
|
type PlayerGameCtrlData struct {
|
||||||
|
|
@ -537,6 +540,7 @@ type PigBankData struct {
|
||||||
TakeTimes int32 //一共领取次数
|
TakeTimes int32 //一共领取次数
|
||||||
BankCoin int64 //当前金币数量
|
BankCoin int64 //当前金币数量
|
||||||
DayBuyTimes int32 //当天领取次数
|
DayBuyTimes int32 //当天领取次数
|
||||||
|
TakeRecord map[int32]int64 // 每次领取记录
|
||||||
}
|
}
|
||||||
|
|
||||||
// 钻石储存罐数据
|
// 钻石储存罐数据
|
||||||
|
|
@ -544,6 +548,22 @@ type DiamondBankData struct {
|
||||||
TakeTimes int32 //一共领取次数
|
TakeTimes int32 //一共领取次数
|
||||||
BankDiamond float64 //当前钻石数量
|
BankDiamond float64 //当前钻石数量
|
||||||
DayBuyTimes int32 //当天领取次数
|
DayBuyTimes int32 //当天领取次数
|
||||||
|
TakeRecord map[int32]int64 // 每次领取记录
|
||||||
|
}
|
||||||
|
|
||||||
|
type RedPacketData struct {
|
||||||
|
N int64 // 领取次数
|
||||||
|
RN int64 // 非空奖次数
|
||||||
|
JN int32 // 参与次数
|
||||||
|
}
|
||||||
|
|
||||||
|
type PushCoinData struct {
|
||||||
|
Shake int32 // 震动次数
|
||||||
|
Refresh int64 // 刷新次数
|
||||||
|
Power int64 // 能量值
|
||||||
|
Exchange map[int32]int32 // 兑换次数 兑换id:兑换次数
|
||||||
|
Dram int // 抽奖次数
|
||||||
|
Items map[int32]int64 // 道具
|
||||||
}
|
}
|
||||||
|
|
||||||
type WelfareData struct {
|
type WelfareData struct {
|
||||||
|
|
@ -562,6 +582,9 @@ type WelfareData struct {
|
||||||
DiamondBank *DiamondBankData // 钻石储存罐
|
DiamondBank *DiamondBankData // 钻石储存罐
|
||||||
PermitAward map[int32]int64 // 赛季通行证奖励领取时间
|
PermitAward map[int32]int64 // 赛季通行证奖励领取时间
|
||||||
PermitExchange map[int32][]int64 // 赛季通行证兑换次数, 多次的兑换时间
|
PermitExchange map[int32][]int64 // 赛季通行证兑换次数, 多次的兑换时间
|
||||||
|
NianData *NianData //年兽活动数据
|
||||||
|
RedPacket map[int64]*RedPacketData // 红包活动 活动id:领取次数
|
||||||
|
PushCoin *PushCoinData // 推币机活动
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewWelfareData() *WelfareData {
|
func NewWelfareData() *WelfareData {
|
||||||
|
|
@ -570,10 +593,19 @@ func NewWelfareData() *WelfareData {
|
||||||
VIPBag: make(map[int32]map[int32]int32),
|
VIPBag: make(map[int32]map[int32]int32),
|
||||||
Task: make(map[int32]*TaskData),
|
Task: make(map[int32]*TaskData),
|
||||||
PhoneLotteryTask: make(map[int32]*TaskData),
|
PhoneLotteryTask: make(map[int32]*TaskData),
|
||||||
PigBank: &PigBankData{},
|
PigBank: &PigBankData{
|
||||||
DiamondBank: &DiamondBankData{},
|
TakeRecord: make(map[int32]int64, 8),
|
||||||
|
},
|
||||||
|
DiamondBank: &DiamondBankData{
|
||||||
|
TakeRecord: make(map[int32]int64, 8),
|
||||||
|
},
|
||||||
PermitAward: make(map[int32]int64),
|
PermitAward: make(map[int32]int64),
|
||||||
PermitExchange: make(map[int32][]int64),
|
PermitExchange: make(map[int32][]int64),
|
||||||
|
RedPacket: make(map[int64]*RedPacketData),
|
||||||
|
NianData: &NianData{
|
||||||
|
OtherAwardNum: make(map[int32]int32),
|
||||||
|
GiftShop: make(map[int32]int32),
|
||||||
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -666,6 +698,24 @@ type WebPlayerDataParam struct {
|
||||||
Long, PermitScore int64
|
Long, PermitScore int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type NianData struct {
|
||||||
|
ActivityStartTime int64 //活动开始时间
|
||||||
|
ActivityEndTime int64 //活动结束时间
|
||||||
|
BossHp int64 //Boss当前血量
|
||||||
|
BuffStatus bool //Buff领取状态
|
||||||
|
BuffCount int64 //Buff剩余生效次数
|
||||||
|
SignAwardTime int64 //签到奖励领取时间
|
||||||
|
SignOtherAwardCount int32 //签到额外奖励掉落数量
|
||||||
|
SignOtherAwardProp int32 //签到额外奖励掉落概率
|
||||||
|
BossDieCount int32 //BOSS死亡次数
|
||||||
|
LittleHurt int32 //小爆竹次数
|
||||||
|
BigHurt int32 //大爆竹次数
|
||||||
|
OtherAwardNum map[int32]int32 //奖励掉落数量
|
||||||
|
AttackMaxHp int64 //单次攻击最大血量
|
||||||
|
AttackSumHp int64 //攻击总伤害
|
||||||
|
GiftShop map[int32]int32 //购买每日礼包记录
|
||||||
|
}
|
||||||
|
|
||||||
func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData {
|
func ConvertPlayerDataToWebData(param *WebPlayerDataParam) *webapi.PlayerData {
|
||||||
if param == nil || param.PlayerData == nil {
|
if param == nil || param.PlayerData == nil {
|
||||||
return nil
|
return nil
|
||||||
|
|
|
||||||
|
|
@ -12,6 +12,7 @@ const (
|
||||||
MQRankPlayerInvite = "log_rankplayerinvite"
|
MQRankPlayerInvite = "log_rankplayerinvite"
|
||||||
MQRankPlayerLevel = "log_rankplayerlevel"
|
MQRankPlayerLevel = "log_rankplayerlevel"
|
||||||
MQRankPlayerPermit = "log_rankplayerpermit" // 赛季通行证排行榜
|
MQRankPlayerPermit = "log_rankplayerpermit" // 赛季通行证排行榜
|
||||||
|
MQRankNian = "log_ranknian" //年兽排行榜
|
||||||
)
|
)
|
||||||
|
|
||||||
// 排行榜类型
|
// 排行榜类型
|
||||||
|
|
@ -330,3 +331,91 @@ func SaveRankInvite(args *RankInvite) error {
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 年兽排行榜
|
||||||
|
type NianInfo struct {
|
||||||
|
Platform string
|
||||||
|
SnId int32
|
||||||
|
Name string
|
||||||
|
Luck int64
|
||||||
|
Damage int64
|
||||||
|
ModId int32 //头像
|
||||||
|
LuckTime int64 //幸运值更新时间
|
||||||
|
Ts int64 //更新时间
|
||||||
|
}
|
||||||
|
|
||||||
|
type FindNianListArgs struct {
|
||||||
|
Platform string
|
||||||
|
}
|
||||||
|
type FindNianListReply struct {
|
||||||
|
List []*NianInfo
|
||||||
|
}
|
||||||
|
|
||||||
|
func FindLuckNianRankList(args *FindNianListArgs) (*FindNianListReply, error) {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.FindLuckNianList rpcCli == nil")
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := new(FindNianListReply)
|
||||||
|
err := rpcCli.CallWithTimeout("RankNianSvc.LuckFind", args, ret, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("GetNianLuckRankList error:", err)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func FindDamageNianRankList(args *FindNianListArgs) (*FindNianListReply, error) {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.FindNianList rpcCli == nil")
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
ret := new(FindNianListReply)
|
||||||
|
err := rpcCli.CallWithTimeout("RankNianSvc.DamageFind", args, ret, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("GetNianDamageRankList error:", err)
|
||||||
|
return ret, err
|
||||||
|
}
|
||||||
|
return ret, nil
|
||||||
|
}
|
||||||
|
func ClearNianRank(args *FindNianListArgs) error {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.FindNianList rpcCli == nil")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
ret := new(FindNianListReply)
|
||||||
|
err := rpcCli.CallWithTimeout("RankNianSvc.UpdateAll", args, ret, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("GetNianDamageRankList error:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func DelNianRank(args *FindNianListArgs) error {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.FindNianList rpcCli == nil")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
ret := new(FindNianListReply)
|
||||||
|
err := rpcCli.CallWithTimeout("RankNianSvc.DelAll", args, ret, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Error("GetNianDamageRankList error:", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// 年兽排行榜记录
|
||||||
|
type NianPlayerRankLog struct {
|
||||||
|
TypeId int32 //1-幸运榜 2:伤害榜
|
||||||
|
RankData []*NianPlayerRankData
|
||||||
|
Platform string
|
||||||
|
Ts int64
|
||||||
|
}
|
||||||
|
type NianPlayerRankData struct {
|
||||||
|
RankId int32
|
||||||
|
Snid int32
|
||||||
|
Score int64
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,124 @@
|
||||||
|
package model
|
||||||
|
|
||||||
|
import (
|
||||||
|
"errors"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:generate mongoctl -model-dir=. -model-names=RedPacket -dao-dir=../dao/
|
||||||
|
type RedPacket struct {
|
||||||
|
ID primitive.ObjectID `bson:"_id" gen:"autoFill"`
|
||||||
|
Cid int64 `bson:"cid"` // 红包活动id
|
||||||
|
Use map[int64]int64 `bson:"use"` // 已发红包 红包奖励数量:已发个数
|
||||||
|
Ts int64 `bson:"ts"` // 更新时间戳
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacket) DatabaseName() string {
|
||||||
|
return "log"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacket) CollectionName() string {
|
||||||
|
return "log_redpacket"
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetRedPacketAll(plt string) (res []*RedPacket, err error) {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.GetRedPacketAll rpcCli == nil")
|
||||||
|
return nil, errors.New("rpc client is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
res = make([]*RedPacket, 0)
|
||||||
|
|
||||||
|
err = rpcCli.CallWithTimeout("RedPacketService.GetAll", &plt, &res, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("GetRedPacketAll error: %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type UpdateRedPacketAllReq struct {
|
||||||
|
Plt string
|
||||||
|
List []*RedPacket
|
||||||
|
}
|
||||||
|
|
||||||
|
func UpdateRedPacketAll(plt string, list []*RedPacket) error {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.UpdateRedPacketAll rpcCli == nil")
|
||||||
|
return errors.New("rpc client is nil")
|
||||||
|
}
|
||||||
|
req := &UpdateRedPacketAllReq{
|
||||||
|
Plt: plt,
|
||||||
|
List: list,
|
||||||
|
}
|
||||||
|
res := false
|
||||||
|
|
||||||
|
err := rpcCli.CallWithTimeout("RedPacketService.UpdateAll", req, &res, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("UpdateRedPacketAll error: %v", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// BackRedPacket 红包统计数据
|
||||||
|
type BackRedPacket struct {
|
||||||
|
Platform string // 平台
|
||||||
|
Id int32 // 红包活动id
|
||||||
|
SnId int32 // 玩家id
|
||||||
|
ItemId int32 // 道具id
|
||||||
|
ItemNum int64 // 道具数量
|
||||||
|
Ts int64 // 时间戳
|
||||||
|
}
|
||||||
|
|
||||||
|
//go:generate mongoctl -model-dir=. -model-names=RedPacketHistory -dao-dir=../dao/
|
||||||
|
type RedPacketHistory struct {
|
||||||
|
Platform string `bson:"-"` // 平台
|
||||||
|
ID primitive.ObjectID `bson:"_id" gen:"autoFill"`
|
||||||
|
Cid int64 `bson:"cid"` // 红包活动id
|
||||||
|
Snid int32 `bson:"snid"` // 玩家id
|
||||||
|
Ts int64 `bson:"ts"` // 时间戳
|
||||||
|
ItemId int32 `bson:"itemid"` // 道具id
|
||||||
|
ItemNum int64 `bson:"itemnum"` // 道具数量
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketHistory) DatabaseName() string {
|
||||||
|
return "log"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *RedPacketHistory) CollectionName() string {
|
||||||
|
return "log_redpackethistory"
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetRedPacketHistoryReq struct {
|
||||||
|
Plt string
|
||||||
|
Snid int32
|
||||||
|
Cid int64
|
||||||
|
}
|
||||||
|
|
||||||
|
func GetRedPacketHistory(plt string, snid int32, cid int64) (res []*RedPacketHistory, err error) {
|
||||||
|
if rpcCli == nil {
|
||||||
|
logger.Logger.Error("model.GetRedPacketHistory rpcCli == nil")
|
||||||
|
return nil, errors.New("rpc client is nil")
|
||||||
|
}
|
||||||
|
|
||||||
|
req := &GetRedPacketHistoryReq{
|
||||||
|
Plt: plt,
|
||||||
|
Snid: snid,
|
||||||
|
Cid: cid,
|
||||||
|
}
|
||||||
|
res = make([]*RedPacketHistory, 0)
|
||||||
|
|
||||||
|
err = rpcCli.CallWithTimeout("RedPacketService.GetHistory", req, &res, time.Second*30)
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("GetRedPacketHistory error: %v", err)
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return res, nil
|
||||||
|
}
|
||||||
|
|
@ -76,6 +76,7 @@ type RegisterHandlerParam struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterHandler 注册消息处理函数
|
// RegisterHandler 注册消息处理函数
|
||||||
|
// 必须在init()函数中调用
|
||||||
func (c *MessageMgr) RegisterHandler(param *RegisterHandlerParam) {
|
func (c *MessageMgr) RegisterHandler(param *RegisterHandlerParam) {
|
||||||
if param == nil {
|
if param == nil {
|
||||||
return
|
return
|
||||||
|
|
@ -143,6 +144,7 @@ func WriteWithOptions(data interface{}, name string, opts ...broker.PublishOptio
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterHandler 注册消息处理函数
|
// RegisterHandler 注册消息处理函数
|
||||||
|
// 必须在init()函数中调用
|
||||||
func RegisterHandler(param *RegisterHandlerParam) {
|
func RegisterHandler(param *RegisterHandlerParam) {
|
||||||
MessageMgrSingle.RegisterHandler(param)
|
MessageMgrSingle.RegisterHandler(param)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ const (
|
||||||
BackSystemJyb = "back_jyblog"
|
BackSystemJyb = "back_jyblog"
|
||||||
BackActivityLog = "back_activitylog"
|
BackActivityLog = "back_activitylog"
|
||||||
BackOnlineGame = "back_onlinegame"
|
BackOnlineGame = "back_onlinegame"
|
||||||
|
BackRedPacket = "back_redpacket"
|
||||||
|
NianPlayerRank = "log_nianplayerrank"
|
||||||
)
|
)
|
||||||
|
|
||||||
// go后端
|
// go后端
|
||||||
|
|
@ -46,6 +48,7 @@ const (
|
||||||
DBGiveLog = "db_givelog"
|
DBGiveLog = "db_givelog"
|
||||||
DBLotteryCode = "db_lotterycode" // 玩家抽奖码
|
DBLotteryCode = "db_lotterycode" // 玩家抽奖码
|
||||||
DBLotteryLog = "db_lotterylog" // 中奖记录
|
DBLotteryLog = "db_lotterylog" // 中奖记录
|
||||||
|
DBRedPacket = "db_redpackethistory" // 红包记录
|
||||||
)
|
)
|
||||||
|
|
||||||
// ranksrv 消息
|
// ranksrv 消息
|
||||||
|
|
|
||||||
|
|
@ -1,515 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.27.1-devel
|
|
||||||
// protoc v3.19.4
|
|
||||||
// source: protocol/activity/actsign.proto
|
|
||||||
|
|
||||||
package activity
|
|
||||||
|
|
||||||
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 OpResultCode_ActSign int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_Sucess OpResultCode_ActSign = 0 //成功
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_Error OpResultCode_ActSign = 1 //失败
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_Close OpResultCode_ActSign = 1001 //活动未开启
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_PayNum_Low OpResultCode_ActSign = 1002 //未达到最低充值金额
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_Config_Vip_Error OpResultCode_ActSign = 1003 //vip不匹配
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_Config_Day_Error OpResultCode_ActSign = 1004 //签到天数不匹配
|
|
||||||
OpResultCode_ActSign_OPRC_Activity_Sign_Repeat OpResultCode_ActSign = 1005 //重复签到
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for OpResultCode_ActSign.
|
|
||||||
var (
|
|
||||||
OpResultCode_ActSign_name = map[int32]string{
|
|
||||||
0: "OPRC_Activity_Sign_Sucess",
|
|
||||||
1: "OPRC_Activity_Sign_Error",
|
|
||||||
1001: "OPRC_Activity_Sign_Close",
|
|
||||||
1002: "OPRC_Activity_Sign_PayNum_Low",
|
|
||||||
1003: "OPRC_Activity_Sign_Config_Vip_Error",
|
|
||||||
1004: "OPRC_Activity_Sign_Config_Day_Error",
|
|
||||||
1005: "OPRC_Activity_Sign_Repeat",
|
|
||||||
}
|
|
||||||
OpResultCode_ActSign_value = map[string]int32{
|
|
||||||
"OPRC_Activity_Sign_Sucess": 0,
|
|
||||||
"OPRC_Activity_Sign_Error": 1,
|
|
||||||
"OPRC_Activity_Sign_Close": 1001,
|
|
||||||
"OPRC_Activity_Sign_PayNum_Low": 1002,
|
|
||||||
"OPRC_Activity_Sign_Config_Vip_Error": 1003,
|
|
||||||
"OPRC_Activity_Sign_Config_Day_Error": 1004,
|
|
||||||
"OPRC_Activity_Sign_Repeat": 1005,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x OpResultCode_ActSign) Enum() *OpResultCode_ActSign {
|
|
||||||
p := new(OpResultCode_ActSign)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x OpResultCode_ActSign) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (OpResultCode_ActSign) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_protocol_activity_actsign_proto_enumTypes[0].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (OpResultCode_ActSign) Type() protoreflect.EnumType {
|
|
||||||
return &file_protocol_activity_actsign_proto_enumTypes[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x OpResultCode_ActSign) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use OpResultCode_ActSign.Descriptor instead.
|
|
||||||
func (OpResultCode_ActSign) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 签到
|
|
||||||
type ActSignPacketID int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
ActSignPacketID_PACKET_SignZero ActSignPacketID = 0 // 弃用消息号
|
|
||||||
ActSignPacketID_PACKET_CSSign ActSignPacketID = 2662 // 签到
|
|
||||||
ActSignPacketID_PACKET_SCSign ActSignPacketID = 2663
|
|
||||||
ActSignPacketID_PACKET_CSSignData ActSignPacketID = 2664 // 签到数据
|
|
||||||
ActSignPacketID_PACKET_SCSignData ActSignPacketID = 2665
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for ActSignPacketID.
|
|
||||||
var (
|
|
||||||
ActSignPacketID_name = map[int32]string{
|
|
||||||
0: "PACKET_SignZero",
|
|
||||||
2662: "PACKET_CSSign",
|
|
||||||
2663: "PACKET_SCSign",
|
|
||||||
2664: "PACKET_CSSignData",
|
|
||||||
2665: "PACKET_SCSignData",
|
|
||||||
}
|
|
||||||
ActSignPacketID_value = map[string]int32{
|
|
||||||
"PACKET_SignZero": 0,
|
|
||||||
"PACKET_CSSign": 2662,
|
|
||||||
"PACKET_SCSign": 2663,
|
|
||||||
"PACKET_CSSignData": 2664,
|
|
||||||
"PACKET_SCSignData": 2665,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x ActSignPacketID) Enum() *ActSignPacketID {
|
|
||||||
p := new(ActSignPacketID)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ActSignPacketID) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ActSignPacketID) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_protocol_activity_actsign_proto_enumTypes[1].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (ActSignPacketID) Type() protoreflect.EnumType {
|
|
||||||
return &file_protocol_activity_actsign_proto_enumTypes[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x ActSignPacketID) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use ActSignPacketID.Descriptor instead.
|
|
||||||
func (ActSignPacketID) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{1}
|
|
||||||
}
|
|
||||||
|
|
||||||
//PACKET_CSSign
|
|
||||||
type CSSign struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
SignIndex int32 `protobuf:"varint,1,opt,name=SignIndex,proto3" json:"SignIndex,omitempty"`
|
|
||||||
SignType int32 `protobuf:"varint,2,opt,name=SignType,proto3" json:"SignType,omitempty"` //0.普通签到 1.双倍签到
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CSSign) Reset() {
|
|
||||||
*x = CSSign{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_activity_actsign_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CSSign) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*CSSign) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *CSSign) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_activity_actsign_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 CSSign.ProtoReflect.Descriptor instead.
|
|
||||||
func (*CSSign) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CSSign) GetSignIndex() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SignIndex
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CSSign) GetSignType() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SignType
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
//PACKET_SCSign
|
|
||||||
type SCSign struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
SignIndex int32 `protobuf:"varint,1,opt,name=SignIndex,proto3" json:"SignIndex,omitempty"`
|
|
||||||
SignType int32 `protobuf:"varint,2,opt,name=SignType,proto3" json:"SignType,omitempty"` //0.普通签到 1.双倍签到
|
|
||||||
OpRetCode OpResultCode_ActSign `protobuf:"varint,3,opt,name=OpRetCode,proto3,enum=activity.OpResultCode_ActSign" json:"OpRetCode,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSign) Reset() {
|
|
||||||
*x = SCSign{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_activity_actsign_proto_msgTypes[1]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSign) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*SCSign) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *SCSign) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_activity_actsign_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 SCSign.ProtoReflect.Descriptor instead.
|
|
||||||
func (*SCSign) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{1}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSign) GetSignIndex() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SignIndex
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSign) GetSignType() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SignType
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSign) GetOpRetCode() OpResultCode_ActSign {
|
|
||||||
if x != nil {
|
|
||||||
return x.OpRetCode
|
|
||||||
}
|
|
||||||
return OpResultCode_ActSign_OPRC_Activity_Sign_Sucess
|
|
||||||
}
|
|
||||||
|
|
||||||
//PACKET_CSSignData
|
|
||||||
type CSSignData struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CSSignData) Reset() {
|
|
||||||
*x = CSSignData{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_activity_actsign_proto_msgTypes[2]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *CSSignData) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*CSSignData) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *CSSignData) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_activity_actsign_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 CSSignData.ProtoReflect.Descriptor instead.
|
|
||||||
func (*CSSignData) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{2}
|
|
||||||
}
|
|
||||||
|
|
||||||
//PACKET_SCSignData
|
|
||||||
type SCSignData struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
SignCount int32 `protobuf:"varint,1,opt,name=SignCount,proto3" json:"SignCount,omitempty"`
|
|
||||||
TodaySign int32 `protobuf:"varint,2,opt,name=TodaySign,proto3" json:"TodaySign,omitempty"` //0.未签到 1.已签到
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSignData) Reset() {
|
|
||||||
*x = SCSignData{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_activity_actsign_proto_msgTypes[3]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSignData) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*SCSignData) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *SCSignData) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_activity_actsign_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 SCSignData.ProtoReflect.Descriptor instead.
|
|
||||||
func (*SCSignData) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescGZIP(), []int{3}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSignData) GetSignCount() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.SignCount
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SCSignData) GetTodaySign() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.TodaySign
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_protocol_activity_actsign_proto protoreflect.FileDescriptor
|
|
||||||
|
|
||||||
var file_protocol_activity_actsign_proto_rawDesc = []byte{
|
|
||||||
0x0a, 0x1f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76,
|
|
||||||
0x69, 0x74, 0x79, 0x2f, 0x61, 0x63, 0x74, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
|
||||||
0x6f, 0x12, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x42, 0x0a, 0x06, 0x43,
|
|
||||||
0x53, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e, 0x64,
|
|
||||||
0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x49, 0x6e,
|
|
||||||
0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x18,
|
|
||||||
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x69, 0x67, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x22,
|
|
||||||
0x80, 0x01, 0x0a, 0x06, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x69,
|
|
||||||
0x67, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x53,
|
|
||||||
0x69, 0x67, 0x6e, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1a, 0x0a, 0x08, 0x53, 0x69, 0x67, 0x6e,
|
|
||||||
0x54, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x53, 0x69, 0x67, 0x6e,
|
|
||||||
0x54, 0x79, 0x70, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
|
|
||||||
0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69,
|
|
||||||
0x74, 0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f,
|
|
||||||
0x41, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f,
|
|
||||||
0x64, 0x65, 0x22, 0x0c, 0x0a, 0x0a, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61,
|
|
||||||
0x22, 0x48, 0x0a, 0x0a, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x12, 0x1c,
|
|
||||||
0x0a, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
||||||
0x05, 0x52, 0x09, 0x53, 0x69, 0x67, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09,
|
|
||||||
0x54, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52,
|
|
||||||
0x09, 0x54, 0x6f, 0x64, 0x61, 0x79, 0x53, 0x69, 0x67, 0x6e, 0x2a, 0x8a, 0x02, 0x0a, 0x14, 0x4f,
|
|
||||||
0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x5f, 0x41, 0x63, 0x74, 0x53,
|
|
||||||
0x69, 0x67, 0x6e, 0x12, 0x1d, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69,
|
|
||||||
0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73,
|
|
||||||
0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76,
|
|
||||||
0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01,
|
|
||||||
0x12, 0x1d, 0x0a, 0x18, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
|
|
||||||
0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x10, 0xe9, 0x07, 0x12,
|
|
||||||
0x22, 0x0a, 0x1d, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79,
|
|
||||||
0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x50, 0x61, 0x79, 0x4e, 0x75, 0x6d, 0x5f, 0x4c, 0x6f, 0x77,
|
|
||||||
0x10, 0xea, 0x07, 0x12, 0x28, 0x0a, 0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69,
|
|
||||||
0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67,
|
|
||||||
0x5f, 0x56, 0x69, 0x70, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xeb, 0x07, 0x12, 0x28, 0x0a,
|
|
||||||
0x23, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53,
|
|
||||||
0x69, 0x67, 0x6e, 0x5f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x5f, 0x44, 0x61, 0x79, 0x5f, 0x45,
|
|
||||||
0x72, 0x72, 0x6f, 0x72, 0x10, 0xec, 0x07, 0x12, 0x1e, 0x0a, 0x19, 0x4f, 0x50, 0x52, 0x43, 0x5f,
|
|
||||||
0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5f, 0x52, 0x65,
|
|
||||||
0x70, 0x65, 0x61, 0x74, 0x10, 0xed, 0x07, 0x2a, 0x7e, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x53, 0x69,
|
|
||||||
0x67, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x13, 0x0a, 0x0f, 0x50, 0x41,
|
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x69, 0x67, 0x6e, 0x5a, 0x65, 0x72, 0x6f, 0x10, 0x00, 0x12,
|
|
||||||
0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e,
|
|
||||||
0x10, 0xe6, 0x14, 0x12, 0x12, 0x0a, 0x0d, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
|
|
||||||
0x53, 0x69, 0x67, 0x6e, 0x10, 0xe7, 0x14, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
|
||||||
0x54, 0x5f, 0x43, 0x53, 0x53, 0x69, 0x67, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x10, 0xe8, 0x14, 0x12,
|
|
||||||
0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x53, 0x69, 0x67, 0x6e,
|
|
||||||
0x44, 0x61, 0x74, 0x61, 0x10, 0xe9, 0x14, 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, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
|
|
||||||
0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
file_protocol_activity_actsign_proto_rawDescOnce sync.Once
|
|
||||||
file_protocol_activity_actsign_proto_rawDescData = file_protocol_activity_actsign_proto_rawDesc
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_protocol_activity_actsign_proto_rawDescGZIP() []byte {
|
|
||||||
file_protocol_activity_actsign_proto_rawDescOnce.Do(func() {
|
|
||||||
file_protocol_activity_actsign_proto_rawDescData = protoimpl.X.CompressGZIP(file_protocol_activity_actsign_proto_rawDescData)
|
|
||||||
})
|
|
||||||
return file_protocol_activity_actsign_proto_rawDescData
|
|
||||||
}
|
|
||||||
|
|
||||||
var file_protocol_activity_actsign_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
|
||||||
var file_protocol_activity_actsign_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
|
|
||||||
var file_protocol_activity_actsign_proto_goTypes = []interface{}{
|
|
||||||
(OpResultCode_ActSign)(0), // 0: activity.OpResultCode_ActSign
|
|
||||||
(ActSignPacketID)(0), // 1: activity.ActSignPacketID
|
|
||||||
(*CSSign)(nil), // 2: activity.CSSign
|
|
||||||
(*SCSign)(nil), // 3: activity.SCSign
|
|
||||||
(*CSSignData)(nil), // 4: activity.CSSignData
|
|
||||||
(*SCSignData)(nil), // 5: activity.SCSignData
|
|
||||||
}
|
|
||||||
var file_protocol_activity_actsign_proto_depIdxs = []int32{
|
|
||||||
0, // 0: activity.SCSign.OpRetCode:type_name -> activity.OpResultCode_ActSign
|
|
||||||
1, // [1:1] is the sub-list for method output_type
|
|
||||||
1, // [1:1] 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_protocol_activity_actsign_proto_init() }
|
|
||||||
func file_protocol_activity_actsign_proto_init() {
|
|
||||||
if File_protocol_activity_actsign_proto != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !protoimpl.UnsafeEnabled {
|
|
||||||
file_protocol_activity_actsign_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*CSSign); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_protocol_activity_actsign_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*SCSign); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_protocol_activity_actsign_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*CSSignData); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_protocol_activity_actsign_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*SCSignData); 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_protocol_activity_actsign_proto_rawDesc,
|
|
||||||
NumEnums: 2,
|
|
||||||
NumMessages: 4,
|
|
||||||
NumExtensions: 0,
|
|
||||||
NumServices: 0,
|
|
||||||
},
|
|
||||||
GoTypes: file_protocol_activity_actsign_proto_goTypes,
|
|
||||||
DependencyIndexes: file_protocol_activity_actsign_proto_depIdxs,
|
|
||||||
EnumInfos: file_protocol_activity_actsign_proto_enumTypes,
|
|
||||||
MessageInfos: file_protocol_activity_actsign_proto_msgTypes,
|
|
||||||
}.Build()
|
|
||||||
File_protocol_activity_actsign_proto = out.File
|
|
||||||
file_protocol_activity_actsign_proto_rawDesc = nil
|
|
||||||
file_protocol_activity_actsign_proto_goTypes = nil
|
|
||||||
file_protocol_activity_actsign_proto_depIdxs = nil
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
package activity;
|
|
||||||
option go_package = "mongo.games.com/game/protocol/activity";
|
|
||||||
|
|
||||||
//操作结果
|
|
||||||
enum OpResultCode_ActSign {
|
|
||||||
OPRC_Activity_Sign_Sucess = 0; //成功
|
|
||||||
OPRC_Activity_Sign_Error = 1; //失败
|
|
||||||
OPRC_Activity_Sign_Close = 1001; //活动未开启
|
|
||||||
OPRC_Activity_Sign_PayNum_Low = 1002; //未达到最低充值金额
|
|
||||||
OPRC_Activity_Sign_Config_Vip_Error = 1003; //vip不匹配
|
|
||||||
OPRC_Activity_Sign_Config_Day_Error = 1004; //签到天数不匹配
|
|
||||||
OPRC_Activity_Sign_Repeat = 1005; //重复签到
|
|
||||||
}
|
|
||||||
// 签到
|
|
||||||
enum ActSignPacketID {
|
|
||||||
PACKET_SignZero = 0;// 弃用消息号
|
|
||||||
PACKET_CSSign = 2662;// 签到
|
|
||||||
PACKET_SCSign = 2663;
|
|
||||||
PACKET_CSSignData = 2664;// 签到数据
|
|
||||||
PACKET_SCSignData = 2665;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PACKET_CSSign
|
|
||||||
message CSSign {
|
|
||||||
int32 SignIndex = 1;
|
|
||||||
int32 SignType = 2; //0.普通签到 1.双倍签到
|
|
||||||
}
|
|
||||||
//PACKET_SCSign
|
|
||||||
message SCSign {
|
|
||||||
int32 SignIndex = 1;
|
|
||||||
int32 SignType = 2; //0.普通签到 1.双倍签到
|
|
||||||
OpResultCode_ActSign OpRetCode = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
//PACKET_CSSignData
|
|
||||||
message CSSignData {
|
|
||||||
}
|
|
||||||
//PACKET_SCSignData
|
|
||||||
message SCSignData {
|
|
||||||
int32 SignCount = 1;
|
|
||||||
int32 TodaySign = 2; //0.未签到 1.已签到
|
|
||||||
}
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,128 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package activity;
|
||||||
|
option go_package = "mongo.games.com/game/protocol/activity";
|
||||||
|
|
||||||
|
enum NianPacketID {
|
||||||
|
PACKET_Nian_ZERO = 0; // 弃用消息号
|
||||||
|
PACKET_CSNianData = 2660; // 获取年兽信息
|
||||||
|
PACKET_SCNianData = 2661; // 返回年兽信息
|
||||||
|
PACKET_CSNianBuff = 2662; // 请求领取BUFF
|
||||||
|
PACKET_SCNianBuff = 2663; // 返回Buff信息
|
||||||
|
PACKET_CSNianRankData = 2664; // 请求排行榜信息
|
||||||
|
PACKET_SCNianRankData = 2665; // 返回排行榜信息
|
||||||
|
PACKET_CSNianAttack = 2666; //请求攻击年兽
|
||||||
|
PACKET_SCNianAttackData = 2667; //返回攻击年兽信息
|
||||||
|
PACKET_CSNianSignAward = 2668; //请求签到
|
||||||
|
PACKET_SCNianSignAward = 2669; //签到返回
|
||||||
|
PACKET_CSNianChange = 2670;//请求兑换小爆竹
|
||||||
|
PACKET_SCNianChange = 2671;//返回兑换道具
|
||||||
|
}
|
||||||
|
//操作结果
|
||||||
|
enum OpResultCode_Nian {
|
||||||
|
OPRC_Sucess_Nian = 0; //成功
|
||||||
|
OPRC_Error_Nian = 1; //失败
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取年兽活动信息
|
||||||
|
//PACKET_CSNianData
|
||||||
|
message CSNianData{
|
||||||
|
}
|
||||||
|
//PACKET_SCNianData
|
||||||
|
message SCNianData{
|
||||||
|
int64 ActivityStartTime = 1; //活动开始时间
|
||||||
|
int64 ActivityEndTime = 2; //活动结束时间
|
||||||
|
int64 BossMaxHp = 3; //Boss最大血量
|
||||||
|
int64 BossHp = 4; //Boss当前血量
|
||||||
|
repeated NianRankData RankData = 5;//排行榜奖励配置
|
||||||
|
int64 AwardTime = 6;//每日签到领取时间
|
||||||
|
int64 BuffCount = 7;//Buff剩余次数
|
||||||
|
bool BuffStatus = 8;//Buff领取状态
|
||||||
|
int64 SignAwardTime = 9;//签到领取时间 0-未领取
|
||||||
|
int64 BuffStartTime = 10; //Buff开始领取时间
|
||||||
|
int64 BuffEndTime = 11; //Buff结束领取时间
|
||||||
|
repeated ShopData shopData = 12;//购买礼包数量
|
||||||
|
string ChangeData = 13; //兑换数据
|
||||||
|
string LuckyRankNeed = 14; //幸运榜上榜条件
|
||||||
|
string RankNeed = 15; //总伤害榜上榜条件
|
||||||
|
int32 Switch = 16; //活动开关 1.开启 2.关闭
|
||||||
|
int32 OtherSignAwardCount = 17;//额外奖励领取次数
|
||||||
|
int32 OtherSignAwardProp = 18;//额外奖励概率
|
||||||
|
repeated RankAwardData OtherSignAward = 19;//签到额外奖励
|
||||||
|
int32 OtherSignMaxCount = 20;//额外奖励领取次数上限
|
||||||
|
int64 AttackMaxHp =21; //单次攻击最大血量
|
||||||
|
int64 AttackSumHp = 22; //攻击总伤害
|
||||||
|
}
|
||||||
|
|
||||||
|
message ShopData{
|
||||||
|
int32 ShopId =1; //shopId
|
||||||
|
int32 ShopNum = 2; //已购买次数
|
||||||
|
int32 MaxShopNum = 3; //最大购买次数
|
||||||
|
}
|
||||||
|
|
||||||
|
//贺春
|
||||||
|
//请求领取BUFF
|
||||||
|
//PACKET_CSNianBuff
|
||||||
|
message CSNianBuff{
|
||||||
|
}
|
||||||
|
//PACKET_SCNianBuff
|
||||||
|
message SCNianBuff{
|
||||||
|
int64 BuffCount = 1; //BUFF剩余次数
|
||||||
|
OpResultCode_Nian OpRetCode = 2; // 返回错误码
|
||||||
|
}
|
||||||
|
|
||||||
|
message NianRankData{
|
||||||
|
int32 TypeId = 1; //1-幸运榜 2-总榜
|
||||||
|
repeated NianRankInfo Data = 2;
|
||||||
|
}
|
||||||
|
message NianRankInfo{
|
||||||
|
int32 RankId =1;
|
||||||
|
repeated RankAwardData Award = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
message RankAwardData{
|
||||||
|
int32 ItemId =1;
|
||||||
|
int64 ItemNum = 2;
|
||||||
|
}
|
||||||
|
//攻击年兽
|
||||||
|
//PACKET_CSNianAttack
|
||||||
|
message CSNianAttack{
|
||||||
|
int32 TypeId = 1; //1-小爆竹 2-小爆竹*10 3-大爆竹
|
||||||
|
}
|
||||||
|
//PACKET_SCNianAttackData
|
||||||
|
message SCNianAttackData{
|
||||||
|
int32 TypeId = 1; //1-小爆竹 2-小爆竹*10 3-大爆竹
|
||||||
|
int64 BossHp = 2; //BOSS当前血量
|
||||||
|
repeated RankAwardData Award = 3; //获得道具
|
||||||
|
int64 AttackHp = 4; // 攻击伤害
|
||||||
|
bool IsDie = 5; //BOSS是否死亡
|
||||||
|
repeated RankAwardData DieAward = 6;//BOSS死亡奖励
|
||||||
|
int64 BuffCount = 7; //BUFF剩余次数
|
||||||
|
repeated RankAwardData ExtraDrop = 8;//大爆竹额外掉落
|
||||||
|
repeated RankAwardData FloorReward = 9;//保底奖励
|
||||||
|
int64 AttackMaxHp = 10; //单次攻击最大血量
|
||||||
|
int64 AttackSumHp = 11; //攻击总伤害
|
||||||
|
}
|
||||||
|
//领取签到奖励
|
||||||
|
//PACKET_CSNianSignAward
|
||||||
|
message CSNianSignAward{
|
||||||
|
}
|
||||||
|
//PACKET_SCNianSignAward
|
||||||
|
message SCNianSignAward{
|
||||||
|
int64 SignAwardTime = 1;
|
||||||
|
repeated RankAwardData SignAward = 2;//签到奖励
|
||||||
|
repeated RankAwardData OtherSignAward = 3;//签到额外奖励
|
||||||
|
int32 OtherSignAwardCount = 4;//额外奖励领取次数
|
||||||
|
int32 OtherSignAwardProp = 5;//额外奖励概率
|
||||||
|
OpResultCode_Nian OpRetCode = 6; // 返回错误码
|
||||||
|
}
|
||||||
|
//兑换
|
||||||
|
//PACKET_CSNianChange
|
||||||
|
message CSNianChange{
|
||||||
|
int32 Num = 1;
|
||||||
|
}
|
||||||
|
//PACKET_SCNianChange
|
||||||
|
message SCNianChange{
|
||||||
|
int32 Num = 1;
|
||||||
|
repeated RankAwardData Award =2;
|
||||||
|
OpResultCode_Nian OpRetCode = 3; // 返回错误码
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,90 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package activity;
|
||||||
|
option go_package = "mongo.games.com/game/protocol/activity";
|
||||||
|
|
||||||
|
enum PushCoinPacketID {
|
||||||
|
PACKET_PushCoin_ZERO = 0;// 弃用消息号
|
||||||
|
PACKET_CSPushCoinInfo = 2680; // 信息
|
||||||
|
PACKET_SCPushCoinInfo = 2681; // 信息返回
|
||||||
|
PACKET_CSPushCoinPlayerOp = 2682; // 玩家操作
|
||||||
|
PACKET_SCPushCoinPlayerOp = 2683; // 玩家操作返回
|
||||||
|
PACKET_NotifyPowerLine = 2684; // 通知能量值
|
||||||
|
PACKET_NotifyDrawInfo = 2685; // 抽奖信息
|
||||||
|
}
|
||||||
|
|
||||||
|
//信息
|
||||||
|
//PACKET_CSPushCoinInfo
|
||||||
|
message CSPushCoinInfo {
|
||||||
|
}
|
||||||
|
//PACKET_SCPushCoinInfo
|
||||||
|
message SCPushCoinInfo {
|
||||||
|
repeated ExchangeInfo ExchangeList = 1; //兑换信息
|
||||||
|
repeated DrawInfo DrawList = 2; //抽奖信息
|
||||||
|
int32 ShakeTimes = 3; //可震动次数
|
||||||
|
int64 PowerLine = 4; // 当前能量值
|
||||||
|
int64 PowerLineMax = 5; // 能量值上限
|
||||||
|
int64 RefreshTimes = 6; // 刷新次数
|
||||||
|
}
|
||||||
|
|
||||||
|
message ItemInfo{
|
||||||
|
int32 ItemId = 1; //道具id
|
||||||
|
int32 ItemNum = 2; //道具数量
|
||||||
|
}
|
||||||
|
|
||||||
|
message ExchangeInfo{
|
||||||
|
int32 Id = 1; //兑换id
|
||||||
|
repeated ItemInfo Cost = 2; //消耗道具
|
||||||
|
repeated ItemInfo Gain = 3; //获得道具
|
||||||
|
int64 Times = 4; //可兑换次数 -1无限
|
||||||
|
int64 TotalTimes = 5; //总共兑换次数 -1无限
|
||||||
|
}
|
||||||
|
|
||||||
|
//抽奖信息
|
||||||
|
//PACKET_NotifyDrawInfo
|
||||||
|
message DrawInfo{
|
||||||
|
int32 Id = 1; //抽奖id
|
||||||
|
int32 ItemId = 2; //道具id
|
||||||
|
int32 ItemNum = 3; //道具数量
|
||||||
|
int64 Coin = 4; //价值
|
||||||
|
}
|
||||||
|
|
||||||
|
//玩家操作
|
||||||
|
//PACKET_CSPushCoinPlayerOp
|
||||||
|
message CSPushCoinPlayerOp {
|
||||||
|
OpCodes OpCode = 1;
|
||||||
|
int64 OpParam = 2;
|
||||||
|
repeated ItemInfo OpItem = 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum OpCodes {
|
||||||
|
OP_Zero = 0;
|
||||||
|
OP_Bet = 1; // 下注 OpParam 道具id
|
||||||
|
OP_Gain = 2; // 得分 OpParam 1有效区 2无效区 OpItem 获得道具
|
||||||
|
OP_Shake = 3; // 震动 OpParam 消耗次数
|
||||||
|
OP_Refresh = 4; // 刷新 OpParam 桌面金额
|
||||||
|
OP_Exchange = 5; // 兑换 OpParam 兑换id
|
||||||
|
}
|
||||||
|
|
||||||
|
enum OpResultPushCoinCode {
|
||||||
|
OPRC_PushCoin_Success = 0; //成功
|
||||||
|
OPRC_PushCoin_Error = 1; //失败
|
||||||
|
OPRC_PushCoin_BetNotEnough = 2; //投币,金币不足
|
||||||
|
OPRC_PushCoin_ExchangeNotEnough = 3; //兑换次数不足
|
||||||
|
OPRC_PushCoin_ShakeNotEnough = 4; //震动次数不足
|
||||||
|
OPRC_PushCoin_ItemNotEnough = 5; //兑换消耗道具不足
|
||||||
|
}
|
||||||
|
|
||||||
|
//PACKET_SCPushCoinPlayerOp
|
||||||
|
message SCPushCoinPlayerOp {
|
||||||
|
OpResultPushCoinCode OpRetCode = 1;
|
||||||
|
OpCodes OpCode = 2;
|
||||||
|
ExchangeInfo Exchange = 3; // 兑换信息,加到背包
|
||||||
|
int32 BetId = 4; // 金币id
|
||||||
|
}
|
||||||
|
|
||||||
|
//通知能量值
|
||||||
|
//PACKET_NotifyPowerLine
|
||||||
|
message NotifyPowerLine {
|
||||||
|
int64 PowerLine = 1; // 当前能量值
|
||||||
|
int64 PowerLineMax = 2; // 能量值上限
|
||||||
|
}
|
||||||
|
|
@ -193,5 +193,9 @@
|
||||||
|
|
||||||
- 5660~5669
|
- 5660~5669
|
||||||
|
|
||||||
|
### pushcoin.proto
|
||||||
|
|
||||||
|
- 5670~5679
|
||||||
|
|
||||||
### game.proto(玩家离开)
|
### game.proto(玩家离开)
|
||||||
- 8000~8099
|
- 8000~8099
|
||||||
|
|
@ -7986,7 +7986,7 @@ type SCEasyWelfaredInfo struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
WelfareSwitch []int32 `protobuf:"varint,1,rep,packed,name=WelfareSwitch,proto3" json:"WelfareSwitch,omitempty"` // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动 1显示 2不显示
|
WelfareSwitch []int32 `protobuf:"varint,1,rep,packed,name=WelfareSwitch,proto3" json:"WelfareSwitch,omitempty"` // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动6年兽活动 1显示 2不显示
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SCEasyWelfaredInfo) Reset() {
|
func (x *SCEasyWelfaredInfo) Reset() {
|
||||||
|
|
|
||||||
|
|
@ -1057,7 +1057,7 @@ message SCVIPInfo {
|
||||||
//
|
//
|
||||||
//PACKET_SC_SWELFAREINFO
|
//PACKET_SC_SWELFAREINFO
|
||||||
message SCEasyWelfaredInfo{
|
message SCEasyWelfaredInfo{
|
||||||
repeated int32 WelfareSwitch = 1; // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动 1显示 2不显示
|
repeated int32 WelfareSwitch = 1; // 下标 0转盘1盲盒2首冲3连续充值4抽手机活动5集卡活动6年兽活动 1显示 2不显示
|
||||||
}
|
}
|
||||||
|
|
||||||
message CSVIPPrivilegeInfo {
|
message CSVIPPrivilegeInfo {
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,104 @@
|
||||||
|
syntax = "proto3";
|
||||||
|
package pushcoin;
|
||||||
|
option go_package = "mongo.games.com/game/protocol/pushcoin";
|
||||||
|
|
||||||
|
// 5670~5679
|
||||||
|
enum PushCoinPacketID {
|
||||||
|
PACKET_PushCoin_ZERO = 0;// 弃用消息号
|
||||||
|
PACKET_SCPushCoinRoomInfo = 5670; // 房间信息
|
||||||
|
PACKET_SCPushCoinRoomState = 5671; // 房间状态
|
||||||
|
PACKET_CSPushCoinPlayerOp = 5672; // 玩家操作
|
||||||
|
PACKET_SCPushCoinPlayerOp = 5673; // 玩家操作返回
|
||||||
|
}
|
||||||
|
|
||||||
|
//房间信息
|
||||||
|
//PACKET_SCPushCoinRoomInfo
|
||||||
|
message SCPushCoinRoomInfo {
|
||||||
|
int32 RoomId = 1; //房间id
|
||||||
|
int32 GameId = 2; //游戏id
|
||||||
|
int32 RoomMode = 3; //游戏模式
|
||||||
|
repeated int32 Params = 4; //规则参数
|
||||||
|
int32 State = 5; //房间当前状态
|
||||||
|
int32 TimeOut = 6; //等待剩余时间 单位:秒
|
||||||
|
repeated PushCoinPlayerData Players = 7; //房间内的玩家信息
|
||||||
|
repeated ExchangeInfo ExchangeList = 8; //兑换信息
|
||||||
|
repeated DrawInfo DrawList = 9; //抽奖信息
|
||||||
|
repeated int64 BetList = 10; //下注金额列表
|
||||||
|
}
|
||||||
|
|
||||||
|
message ItemInfo{
|
||||||
|
int32 ItemId = 1; //道具id
|
||||||
|
int32 ItemNum = 2; //道具数量
|
||||||
|
}
|
||||||
|
|
||||||
|
message ExchangeInfo{
|
||||||
|
int32 Id = 1; //兑换id
|
||||||
|
repeated ItemInfo Cost = 2; //消耗道具
|
||||||
|
repeated ItemInfo Gain = 3; //获得道具
|
||||||
|
int32 ShakeTimes = 4; //获得震动次数
|
||||||
|
}
|
||||||
|
|
||||||
|
message DrawInfo{
|
||||||
|
int32 Id = 1; //抽奖id
|
||||||
|
int32 ItemId = 2; //道具id
|
||||||
|
int32 ItemNum = 3; //道具数量
|
||||||
|
int64 Coin = 4; //价值
|
||||||
|
}
|
||||||
|
|
||||||
|
message PushCoinPlayerData {
|
||||||
|
string Name = 1; //名字
|
||||||
|
int32 SnId = 2; //账号
|
||||||
|
int32 Head = 3; //头像
|
||||||
|
int32 Sex = 4; //性别
|
||||||
|
int64 Coin = 5; //金币
|
||||||
|
int32 Flag = 6; //二进制标记 第一位:是否掉线(0:在线 1:掉线) 第二位:是否准备(0:未准备 1:已准备)
|
||||||
|
repeated string Params = 7; //其他数据 如:ip 等
|
||||||
|
int32 VIP = 8;
|
||||||
|
int32 RoleId = 9; //使用中的角色id
|
||||||
|
int64 Level = 10; //玩家等级
|
||||||
|
int64 Exp = 11; //玩家经验
|
||||||
|
int32 SkinId = 12; //皮肤id
|
||||||
|
int32 ShakeTimes = 13; //可震动次数
|
||||||
|
int64 BaseCoin = 14; //当前底分(单次投币金额)
|
||||||
|
int64 PowerLine = 15; // 当前能量值
|
||||||
|
int64 PowerLineMax = 16; // 能量值上限
|
||||||
|
int64 RefreshTimes = 17; // 刷新次数
|
||||||
|
}
|
||||||
|
|
||||||
|
//房间状态
|
||||||
|
//PACKET_SCPushCoinRoomState
|
||||||
|
message SCPushCoinRoomState {
|
||||||
|
int32 State = 1; //房间当前状态
|
||||||
|
int32 SubState = 2; //房间当前子状态
|
||||||
|
repeated int32 Params = 3; //状态参数
|
||||||
|
}
|
||||||
|
|
||||||
|
//玩家操作
|
||||||
|
//PACKET_CSPushCoinPlayerOp
|
||||||
|
message CSPushCoinPlayerOp {
|
||||||
|
OpCodes OpCode = 1;
|
||||||
|
repeated int64 OpParam = 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
enum OpCodes {
|
||||||
|
OP_Zero = 0;
|
||||||
|
OP_Bet = 1; // 下注 [下注金额]
|
||||||
|
OP_Gain = 2; // 得分 [得分金额]
|
||||||
|
OP_Shake = 3; // 震动 [消耗次数]
|
||||||
|
OP_Refresh = 4; // 刷新 [桌面金额]
|
||||||
|
OP_Exchange = 5; // 兑换 [兑换id]
|
||||||
|
OP_Draw = 6; // 抽奖 [抽奖id]
|
||||||
|
}
|
||||||
|
|
||||||
|
enum OpResultCode {
|
||||||
|
OPRC_Success = 0; //成功
|
||||||
|
OPRC_Error = 1; //失败
|
||||||
|
}
|
||||||
|
|
||||||
|
//PACKET_SCPushCoinPlayerOp
|
||||||
|
message SCPushCoinPlayerOp {
|
||||||
|
OpResultCode OpRetCode = 1;
|
||||||
|
OpCodes OpCode = 2;
|
||||||
|
ExchangeInfo Exchange = 3; // 兑换信息,加到背包
|
||||||
|
DrawInfo Draw = 4; // 抽奖信息,掉落到桌面
|
||||||
|
}
|
||||||
|
|
@ -52,6 +52,12 @@ const (
|
||||||
// 竞技馆抽奖历史
|
// 竞技馆抽奖历史
|
||||||
Rank_PACKET_CSLotteryHistory Rank = 10017
|
Rank_PACKET_CSLotteryHistory Rank = 10017
|
||||||
Rank_PACKET_SCLotteryHistory Rank = 10018
|
Rank_PACKET_SCLotteryHistory Rank = 10018
|
||||||
|
//年兽排行榜
|
||||||
|
Rank_PACKET_RANK_CSNian Rank = 10019
|
||||||
|
Rank_PACKET_RANK_SCNian Rank = 10020
|
||||||
|
// 红包抽奖记录
|
||||||
|
Rank_PACKET_CSRedPacketHistory Rank = 10021
|
||||||
|
Rank_PACKET_SCRedPacketHistory Rank = 10022
|
||||||
)
|
)
|
||||||
|
|
||||||
// Enum value maps for Rank.
|
// Enum value maps for Rank.
|
||||||
|
|
@ -77,6 +83,10 @@ var (
|
||||||
10016: "PACKET_SCRoomAwardOne",
|
10016: "PACKET_SCRoomAwardOne",
|
||||||
10017: "PACKET_CSLotteryHistory",
|
10017: "PACKET_CSLotteryHistory",
|
||||||
10018: "PACKET_SCLotteryHistory",
|
10018: "PACKET_SCLotteryHistory",
|
||||||
|
10019: "PACKET_RANK_CSNian",
|
||||||
|
10020: "PACKET_RANK_SCNian",
|
||||||
|
10021: "PACKET_CSRedPacketHistory",
|
||||||
|
10022: "PACKET_SCRedPacketHistory",
|
||||||
}
|
}
|
||||||
Rank_value = map[string]int32{
|
Rank_value = map[string]int32{
|
||||||
"PACKET_RANK_ZERO": 0,
|
"PACKET_RANK_ZERO": 0,
|
||||||
|
|
@ -99,6 +109,10 @@ var (
|
||||||
"PACKET_SCRoomAwardOne": 10016,
|
"PACKET_SCRoomAwardOne": 10016,
|
||||||
"PACKET_CSLotteryHistory": 10017,
|
"PACKET_CSLotteryHistory": 10017,
|
||||||
"PACKET_SCLotteryHistory": 10018,
|
"PACKET_SCLotteryHistory": 10018,
|
||||||
|
"PACKET_RANK_CSNian": 10019,
|
||||||
|
"PACKET_RANK_SCNian": 10020,
|
||||||
|
"PACKET_CSRedPacketHistory": 10021,
|
||||||
|
"PACKET_SCRedPacketHistory": 10022,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -2331,6 +2345,396 @@ func (x *SCLotteryHistory) GetList() []*LotteryHistory {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PACKET_RANK_CSNian
|
||||||
|
type CSNian struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Page int32 `protobuf:"varint,1,opt,name=Page,proto3" json:"Page,omitempty"` // 页数
|
||||||
|
PageSize int32 `protobuf:"varint,2,opt,name=PageSize,proto3" json:"PageSize,omitempty"` // 每页数量
|
||||||
|
TypeId int32 `protobuf:"varint,3,opt,name=TypeId,proto3" json:"TypeId,omitempty"` //1-幸运榜 2-伤害榜
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSNian) Reset() {
|
||||||
|
*x = CSNian{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[30]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSNian) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*CSNian) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *CSNian) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[30]
|
||||||
|
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 CSNian.ProtoReflect.Descriptor instead.
|
||||||
|
func (*CSNian) Descriptor() ([]byte, []int) {
|
||||||
|
return file_protocol_rank_rank_proto_rawDescGZIP(), []int{30}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSNian) GetPage() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Page
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSNian) GetPageSize() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.PageSize
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSNian) GetTypeId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.TypeId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type NianRankData struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
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"` // 昵称
|
||||||
|
Score int64 `protobuf:"varint,3,opt,name=Score,proto3" json:"Score,omitempty"`
|
||||||
|
Rank int32 `protobuf:"varint,4,opt,name=Rank,proto3" json:"Rank,omitempty"` // 排名
|
||||||
|
ModId int32 `protobuf:"varint,5,opt,name=ModId,proto3" json:"ModId,omitempty"` // 角色id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) Reset() {
|
||||||
|
*x = NianRankData{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[31]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*NianRankData) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *NianRankData) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[31]
|
||||||
|
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 NianRankData.ProtoReflect.Descriptor instead.
|
||||||
|
func (*NianRankData) Descriptor() ([]byte, []int) {
|
||||||
|
return file_protocol_rank_rank_proto_rawDescGZIP(), []int{31}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) GetSnid() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Snid
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) GetName() string {
|
||||||
|
if x != nil {
|
||||||
|
return x.Name
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) GetScore() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Score
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) GetRank() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Rank
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *NianRankData) GetModId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ModId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// PACKET_RANK_SCCoin
|
||||||
|
type SCNian struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Ranks []*NianRankData `protobuf:"bytes,1,rep,name=Ranks,proto3" json:"Ranks,omitempty"` // 排行榜
|
||||||
|
Me *NianRankData `protobuf:"bytes,2,opt,name=Me,proto3" json:"Me,omitempty"` // 玩家自己的排行信息
|
||||||
|
Page int32 `protobuf:"varint,3,opt,name=Page,proto3" json:"Page,omitempty"` // 页数
|
||||||
|
PageSize int32 `protobuf:"varint,4,opt,name=PageSize,proto3" json:"PageSize,omitempty"` // 每页数量
|
||||||
|
Total int32 `protobuf:"varint,5,opt,name=Total,proto3" json:"Total,omitempty"` // 总数量
|
||||||
|
TypeId int32 `protobuf:"varint,6,opt,name=TypeId,proto3" json:"TypeId,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) Reset() {
|
||||||
|
*x = SCNian{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[32]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*SCNian) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *SCNian) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[32]
|
||||||
|
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 SCNian.ProtoReflect.Descriptor instead.
|
||||||
|
func (*SCNian) Descriptor() ([]byte, []int) {
|
||||||
|
return file_protocol_rank_rank_proto_rawDescGZIP(), []int{32}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) GetRanks() []*NianRankData {
|
||||||
|
if x != nil {
|
||||||
|
return x.Ranks
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) GetMe() *NianRankData {
|
||||||
|
if x != nil {
|
||||||
|
return x.Me
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) GetPage() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Page
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) GetPageSize() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.PageSize
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) GetTotal() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Total
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCNian) GetTypeId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.TypeId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// 红包抽奖记录
|
||||||
|
// PACKET_CSRedPacketHistory
|
||||||
|
type CSRedPacketHistory struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Id int64 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 红包活动id
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSRedPacketHistory) Reset() {
|
||||||
|
*x = CSRedPacketHistory{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[33]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSRedPacketHistory) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*CSRedPacketHistory) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *CSRedPacketHistory) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[33]
|
||||||
|
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 CSRedPacketHistory.ProtoReflect.Descriptor instead.
|
||||||
|
func (*CSRedPacketHistory) Descriptor() ([]byte, []int) {
|
||||||
|
return file_protocol_rank_rank_proto_rawDescGZIP(), []int{33}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *CSRedPacketHistory) GetId() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Id
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type RedPacketHistory struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
Ts int64 `protobuf:"varint,1,opt,name=Ts,proto3" json:"Ts,omitempty"` // 时间戳
|
||||||
|
ItemId int32 `protobuf:"varint,5,opt,name=ItemId,proto3" json:"ItemId,omitempty"` // 道具id
|
||||||
|
ItemNum int64 `protobuf:"varint,6,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` // 道具数量
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RedPacketHistory) Reset() {
|
||||||
|
*x = RedPacketHistory{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[34]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RedPacketHistory) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*RedPacketHistory) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *RedPacketHistory) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[34]
|
||||||
|
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 RedPacketHistory.ProtoReflect.Descriptor instead.
|
||||||
|
func (*RedPacketHistory) Descriptor() ([]byte, []int) {
|
||||||
|
return file_protocol_rank_rank_proto_rawDescGZIP(), []int{34}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RedPacketHistory) GetTs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.Ts
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RedPacketHistory) GetItemId() int32 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ItemId
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *RedPacketHistory) GetItemNum() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.ItemNum
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
type SCRedPacketHistory struct {
|
||||||
|
state protoimpl.MessageState
|
||||||
|
sizeCache protoimpl.SizeCache
|
||||||
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
|
List []*RedPacketHistory `protobuf:"bytes,1,rep,name=List,proto3" json:"List,omitempty"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCRedPacketHistory) Reset() {
|
||||||
|
*x = SCRedPacketHistory{}
|
||||||
|
if protoimpl.UnsafeEnabled {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[35]
|
||||||
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
|
ms.StoreMessageInfo(mi)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCRedPacketHistory) String() string {
|
||||||
|
return protoimpl.X.MessageStringOf(x)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (*SCRedPacketHistory) ProtoMessage() {}
|
||||||
|
|
||||||
|
func (x *SCRedPacketHistory) ProtoReflect() protoreflect.Message {
|
||||||
|
mi := &file_protocol_rank_rank_proto_msgTypes[35]
|
||||||
|
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 SCRedPacketHistory.ProtoReflect.Descriptor instead.
|
||||||
|
func (*SCRedPacketHistory) Descriptor() ([]byte, []int) {
|
||||||
|
return file_protocol_rank_rank_proto_rawDescGZIP(), []int{35}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCRedPacketHistory) GetList() []*RedPacketHistory {
|
||||||
|
if x != nil {
|
||||||
|
return x.List
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
var File_protocol_rank_rank_proto protoreflect.FileDescriptor
|
var File_protocol_rank_rank_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_protocol_rank_rank_proto_rawDesc = []byte{
|
var file_protocol_rank_rank_proto_rawDesc = []byte{
|
||||||
|
|
@ -2543,53 +2947,96 @@ var file_protocol_rank_rank_proto_rawDesc = []byte{
|
||||||
0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12,
|
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,
|
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,
|
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,
|
0x6f, 0x72, 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x50, 0x0a, 0x06, 0x43, 0x53, 0x4e,
|
||||||
0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e,
|
0x69, 0x61, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x4b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b,
|
0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53,
|
||||||
0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61,
|
0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53,
|
||||||
0x74, 0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x69, 0x7a, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x03, 0x20,
|
||||||
0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63,
|
0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x76, 0x0a, 0x0c, 0x4e,
|
||||||
0x68, 0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52,
|
0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x53,
|
||||||
0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a,
|
0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12,
|
||||||
0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43,
|
0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
|
||||||
0x6f, 0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01,
|
||||||
0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x94,
|
0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x52, 0x61, 0x6e,
|
||||||
0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b,
|
0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x52, 0x61, 0x6e, 0x6b, 0x12, 0x14, 0x0a,
|
||||||
0x5f, 0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x10, 0x95, 0x4e, 0x12, 0x17, 0x0a, 0x12,
|
0x05, 0x4d, 0x6f, 0x64, 0x49, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x6f,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c,
|
0x64, 0x49, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x06, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x12, 0x28,
|
||||||
0x6f, 0x67, 0x10, 0x96, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
0x0a, 0x05, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e,
|
||||||
0x53, 0x43, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x4c, 0x6f, 0x67, 0x10, 0x97, 0x4e, 0x12, 0x1a,
|
0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4e, 0x69, 0x61, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74,
|
||||||
0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53,
|
0x61, 0x52, 0x05, 0x52, 0x61, 0x6e, 0x6b, 0x73, 0x12, 0x22, 0x0a, 0x02, 0x4d, 0x65, 0x18, 0x02,
|
||||||
0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x98, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
|
0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x72, 0x61, 0x6e, 0x6b, 0x2e, 0x4e, 0x69, 0x61, 0x6e,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x57, 0x69, 0x6e, 0x43,
|
0x52, 0x61, 0x6e, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x02, 0x4d, 0x65, 0x12, 0x12, 0x0a, 0x04,
|
||||||
0x6f, 0x69, 0x6e, 0x10, 0x99, 0x4e, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
0x50, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x50, 0x61, 0x67, 0x65,
|
||||||
0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9a, 0x4e,
|
0x12, 0x1a, 0x0a, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f,
|
0x28, 0x05, 0x52, 0x08, 0x50, 0x61, 0x67, 0x65, 0x53, 0x69, 0x7a, 0x65, 0x12, 0x14, 0x0a, 0x05,
|
||||||
0x53, 0x43, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x10, 0x9b, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41,
|
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x54, 0x6f, 0x74,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x50, 0x65, 0x72, 0x6d,
|
0x61, 0x6c, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x18, 0x06, 0x20, 0x01,
|
||||||
0x69, 0x74, 0x10, 0x9c, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
0x28, 0x05, 0x52, 0x06, 0x54, 0x79, 0x70, 0x65, 0x49, 0x64, 0x22, 0x24, 0x0a, 0x12, 0x43, 0x53,
|
||||||
0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x10, 0x9d, 0x4e,
|
0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79,
|
||||||
0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x6f, 0x6f,
|
0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x02, 0x49, 0x64,
|
||||||
0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10, 0x9e, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
|
0x22, 0x54, 0x0a, 0x10, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73,
|
||||||
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x10,
|
0x74, 0x6f, 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x9f, 0x4e, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52,
|
0x52, 0x02, 0x54, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x05,
|
||||||
0x6f, 0x6f, 0x6d, 0x41, 0x77, 0x61, 0x72, 0x64, 0x4f, 0x6e, 0x65, 0x10, 0xa0, 0x4e, 0x12, 0x1c,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07,
|
||||||
0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x4c, 0x6f, 0x74, 0x74, 0x65,
|
0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49,
|
||||||
0x72, 0x79, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa1, 0x4e, 0x12, 0x1c, 0x0a, 0x17,
|
0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d, 0x22, 0x40, 0x0a, 0x12, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50,
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x4c, 0x6f, 0x74, 0x74, 0x65, 0x72, 0x79,
|
0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x2a, 0x0a, 0x04,
|
||||||
0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa2, 0x4e, 0x2a, 0x8d, 0x01, 0x0a, 0x0a, 0x52,
|
0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x72, 0x61, 0x6e,
|
||||||
0x61, 0x6e, 0x6b, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76,
|
0x6b, 0x2e, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x48, 0x69, 0x73, 0x74, 0x6f,
|
||||||
0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x14,
|
0x72, 0x79, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x90, 0x05, 0x0a, 0x04, 0x52, 0x61, 0x6e,
|
||||||
0x0a, 0x10, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x54, 0x6f, 0x74,
|
0x6b, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b,
|
||||||
0x61, 0x6c, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79,
|
0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
||||||
0x70, 0x65, 0x5f, 0x57, 0x65, 0x65, 0x6b, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x49, 0x6e, 0x76,
|
0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74,
|
||||||
0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x10, 0x03, 0x12,
|
0x63, 0x68, 0x10, 0x90, 0x4e, 0x12, 0x1c, 0x0a, 0x17, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
||||||
0x15, 0x0a, 0x11, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x55, 0x70,
|
0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x52, 0x61, 0x6e, 0x6b, 0x4d, 0x61, 0x74, 0x63, 0x68,
|
||||||
0x57, 0x65, 0x65, 0x6b, 0x10, 0x04, 0x12, 0x12, 0x0a, 0x0e, 0x49, 0x6e, 0x76, 0x69, 0x74, 0x65,
|
0x10, 0x91, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41,
|
||||||
0x54, 0x79, 0x70, 0x65, 0x5f, 0x4d, 0x61, 0x78, 0x10, 0x05, 0x42, 0x24, 0x5a, 0x22, 0x6d, 0x6f,
|
0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x43, 0x6f, 0x69, 0x6e, 0x10, 0x92, 0x4e, 0x12, 0x17, 0x0a, 0x12,
|
||||||
0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x53, 0x43, 0x43, 0x6f,
|
||||||
0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x72, 0x61, 0x6e, 0x6b,
|
0x69, 0x6e, 0x10, 0x93, 0x4e, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
||||||
0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
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, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43,
|
||||||
|
0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x43, 0x53, 0x4e, 0x69, 0x61, 0x6e, 0x10,
|
||||||
|
0xa3, 0x4e, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x41, 0x4e,
|
||||||
|
0x4b, 0x5f, 0x53, 0x43, 0x4e, 0x69, 0x61, 0x6e, 0x10, 0xa4, 0x4e, 0x12, 0x1e, 0x0a, 0x19, 0x50,
|
||||||
|
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||||
|
0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa5, 0x4e, 0x12, 0x1e, 0x0a, 0x19, 0x50,
|
||||||
|
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x52, 0x65, 0x64, 0x50, 0x61, 0x63, 0x6b, 0x65,
|
||||||
|
0x74, 0x48, 0x69, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x10, 0xa6, 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 (
|
var (
|
||||||
|
|
@ -2605,7 +3052,7 @@ func file_protocol_rank_rank_proto_rawDescGZIP() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_protocol_rank_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
var file_protocol_rank_rank_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
||||||
var file_protocol_rank_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 30)
|
var file_protocol_rank_rank_proto_msgTypes = make([]protoimpl.MessageInfo, 36)
|
||||||
var file_protocol_rank_rank_proto_goTypes = []interface{}{
|
var file_protocol_rank_rank_proto_goTypes = []interface{}{
|
||||||
(Rank)(0), // 0: rank.Rank
|
(Rank)(0), // 0: rank.Rank
|
||||||
(RankInvite)(0), // 1: rank.RankInvite
|
(RankInvite)(0), // 1: rank.RankInvite
|
||||||
|
|
@ -2639,6 +3086,12 @@ var file_protocol_rank_rank_proto_goTypes = []interface{}{
|
||||||
(*LotteryShow)(nil), // 29: rank.LotteryShow
|
(*LotteryShow)(nil), // 29: rank.LotteryShow
|
||||||
(*LotteryHistory)(nil), // 30: rank.LotteryHistory
|
(*LotteryHistory)(nil), // 30: rank.LotteryHistory
|
||||||
(*SCLotteryHistory)(nil), // 31: rank.SCLotteryHistory
|
(*SCLotteryHistory)(nil), // 31: rank.SCLotteryHistory
|
||||||
|
(*CSNian)(nil), // 32: rank.CSNian
|
||||||
|
(*NianRankData)(nil), // 33: rank.NianRankData
|
||||||
|
(*SCNian)(nil), // 34: rank.SCNian
|
||||||
|
(*CSRedPacketHistory)(nil), // 35: rank.CSRedPacketHistory
|
||||||
|
(*RedPacketHistory)(nil), // 36: rank.RedPacketHistory
|
||||||
|
(*SCRedPacketHistory)(nil), // 37: rank.SCRedPacketHistory
|
||||||
}
|
}
|
||||||
var file_protocol_rank_rank_proto_depIdxs = []int32{
|
var file_protocol_rank_rank_proto_depIdxs = []int32{
|
||||||
3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank
|
3, // 0: rank.SCRankMatch.Ranks:type_name -> rank.SeasonRank
|
||||||
|
|
@ -2659,11 +3112,14 @@ var file_protocol_rank_rank_proto_depIdxs = []int32{
|
||||||
25, // 15: rank.LotteryHistory.Award:type_name -> rank.Item
|
25, // 15: rank.LotteryHistory.Award:type_name -> rank.Item
|
||||||
29, // 16: rank.LotteryHistory.Show:type_name -> rank.LotteryShow
|
29, // 16: rank.LotteryHistory.Show:type_name -> rank.LotteryShow
|
||||||
30, // 17: rank.SCLotteryHistory.List:type_name -> rank.LotteryHistory
|
30, // 17: rank.SCLotteryHistory.List:type_name -> rank.LotteryHistory
|
||||||
18, // [18:18] is the sub-list for method output_type
|
33, // 18: rank.SCNian.Ranks:type_name -> rank.NianRankData
|
||||||
18, // [18:18] is the sub-list for method input_type
|
33, // 19: rank.SCNian.Me:type_name -> rank.NianRankData
|
||||||
18, // [18:18] is the sub-list for extension type_name
|
36, // 20: rank.SCRedPacketHistory.List:type_name -> rank.RedPacketHistory
|
||||||
18, // [18:18] is the sub-list for extension extendee
|
21, // [21:21] is the sub-list for method output_type
|
||||||
0, // [0:18] is the sub-list for field type_name
|
21, // [21:21] is the sub-list for method input_type
|
||||||
|
21, // [21:21] is the sub-list for extension type_name
|
||||||
|
21, // [21:21] is the sub-list for extension extendee
|
||||||
|
0, // [0:21] is the sub-list for field type_name
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_protocol_rank_rank_proto_init() }
|
func init() { file_protocol_rank_rank_proto_init() }
|
||||||
|
|
@ -3032,6 +3488,78 @@ func file_protocol_rank_rank_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
file_protocol_rank_rank_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*CSNian); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_protocol_rank_rank_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*NianRankData); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_protocol_rank_rank_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*SCNian); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_protocol_rank_rank_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*CSRedPacketHistory); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_protocol_rank_rank_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*RedPacketHistory); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
file_protocol_rank_rank_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} {
|
||||||
|
switch v := v.(*SCRedPacketHistory); i {
|
||||||
|
case 0:
|
||||||
|
return &v.state
|
||||||
|
case 1:
|
||||||
|
return &v.sizeCache
|
||||||
|
case 2:
|
||||||
|
return &v.unknownFields
|
||||||
|
default:
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
type x struct{}
|
type x struct{}
|
||||||
out := protoimpl.TypeBuilder{
|
out := protoimpl.TypeBuilder{
|
||||||
|
|
@ -3039,7 +3567,7 @@ func file_protocol_rank_rank_proto_init() {
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_protocol_rank_rank_proto_rawDesc,
|
RawDescriptor: file_protocol_rank_rank_proto_rawDesc,
|
||||||
NumEnums: 2,
|
NumEnums: 2,
|
||||||
NumMessages: 30,
|
NumMessages: 36,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,12 @@ enum Rank{
|
||||||
// 竞技馆抽奖历史
|
// 竞技馆抽奖历史
|
||||||
PACKET_CSLotteryHistory = 10017;
|
PACKET_CSLotteryHistory = 10017;
|
||||||
PACKET_SCLotteryHistory = 10018;
|
PACKET_SCLotteryHistory = 10018;
|
||||||
|
//年兽排行榜
|
||||||
|
PACKET_RANK_CSNian = 10019;
|
||||||
|
PACKET_RANK_SCNian = 10020;
|
||||||
|
// 红包抽奖记录
|
||||||
|
PACKET_CSRedPacketHistory = 10021;
|
||||||
|
PACKET_SCRedPacketHistory = 10022;
|
||||||
}
|
}
|
||||||
|
|
||||||
// 排位榜
|
// 排位榜
|
||||||
|
|
@ -271,3 +277,42 @@ message LotteryHistory{
|
||||||
message SCLotteryHistory{
|
message SCLotteryHistory{
|
||||||
repeated LotteryHistory List = 1;
|
repeated LotteryHistory List = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PACKET_RANK_CSNian
|
||||||
|
message CSNian{
|
||||||
|
int32 Page = 1; // 页数
|
||||||
|
int32 PageSize = 2; // 每页数量
|
||||||
|
int32 TypeId = 3; //1-幸运榜 2-伤害榜
|
||||||
|
}
|
||||||
|
|
||||||
|
message NianRankData {
|
||||||
|
int32 Snid = 1; // 玩家id
|
||||||
|
string Name = 2; // 昵称
|
||||||
|
int64 Score = 3;
|
||||||
|
int32 Rank = 4; // 排名
|
||||||
|
int32 ModId = 5; // 角色id
|
||||||
|
}
|
||||||
|
|
||||||
|
// PACKET_RANK_SCCoin
|
||||||
|
message SCNian{
|
||||||
|
repeated NianRankData Ranks = 1; // 排行榜
|
||||||
|
NianRankData Me = 2; // 玩家自己的排行信息
|
||||||
|
int32 Page = 3; // 页数
|
||||||
|
int32 PageSize = 4; // 每页数量
|
||||||
|
int32 Total = 5; // 总数量
|
||||||
|
int32 TypeId = 6;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 红包抽奖记录
|
||||||
|
// PACKET_CSRedPacketHistory
|
||||||
|
message CSRedPacketHistory{
|
||||||
|
int64 Id = 1; // 红包活动id
|
||||||
|
}
|
||||||
|
message RedPacketHistory{
|
||||||
|
int64 Ts = 1; // 时间戳
|
||||||
|
int32 ItemId = 5; // 道具id
|
||||||
|
int64 ItemNum = 6; // 道具数量
|
||||||
|
}
|
||||||
|
message SCRedPacketHistory{
|
||||||
|
repeated RedPacketHistory List = 1;
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -5,6 +5,22 @@ syntax = "proto3";
|
||||||
package server;
|
package server;
|
||||||
option go_package = "mongo.games.com/game/protocol/server";
|
option go_package = "mongo.games.com/game/protocol/server";
|
||||||
|
|
||||||
|
message DB_ACTPushCoin {
|
||||||
|
|
||||||
|
int32 Id = 1;
|
||||||
|
|
||||||
|
int32 Rate = 2;
|
||||||
|
|
||||||
|
map<int64, int64> Gain = 3;
|
||||||
|
|
||||||
|
int64 Value = 4;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message DB_ACTPushCoinArray {
|
||||||
|
repeated DB_ACTPushCoin Arr = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message DB_ActSign {
|
message DB_ActSign {
|
||||||
|
|
||||||
int32 Id = 1;
|
int32 Id = 1;
|
||||||
|
|
@ -1263,6 +1279,22 @@ message DB_NewPlayerArray {
|
||||||
repeated DB_NewPlayer Arr = 1;
|
repeated DB_NewPlayer Arr = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message DB_NewYearActivity {
|
||||||
|
|
||||||
|
int32 Id = 1;
|
||||||
|
|
||||||
|
string PorpName = 2;
|
||||||
|
|
||||||
|
string PropValue = 3;
|
||||||
|
|
||||||
|
string PropDec = 4;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message DB_NewYearActivityArray {
|
||||||
|
repeated DB_NewYearActivity Arr = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message DB_PassShow {
|
message DB_PassShow {
|
||||||
|
|
||||||
int32 Id = 1;
|
int32 Id = 1;
|
||||||
|
|
@ -1349,15 +1381,19 @@ message DB_PigBank_Diamond {
|
||||||
|
|
||||||
int32 MaxGold = 5;
|
int32 MaxGold = 5;
|
||||||
|
|
||||||
int32 MaxDiamond = 6;
|
map<int64, int64> GoldExc = 6;
|
||||||
|
|
||||||
int32 DiamondId = 7;
|
int32 MaxDiamond = 7;
|
||||||
|
|
||||||
int32 CoinPrice = 8;
|
int32 DiamondId = 8;
|
||||||
|
|
||||||
int32 DiamondPrice = 9;
|
map<int64, int64> DiamondExc = 9;
|
||||||
|
|
||||||
int32 DiamondNowPrice = 10;
|
int32 CoinPrice = 10;
|
||||||
|
|
||||||
|
int32 DiamondPrice = 11;
|
||||||
|
|
||||||
|
int32 DiamondNowPrice = 12;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1461,6 +1497,8 @@ message DB_PropExchange {
|
||||||
|
|
||||||
map<int64, int64> Gain = 4;
|
map<int64, int64> Gain = 4;
|
||||||
|
|
||||||
|
int32 Times = 5;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message DB_PropExchangeArray {
|
message DB_PropExchangeArray {
|
||||||
|
|
|
||||||
|
|
@ -227,7 +227,7 @@ type CSTaskList struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8:年兽每日任务 9:年兽活动任务 10:累计消耗任务
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CSTaskList) Reset() {
|
func (x *CSTaskList) Reset() {
|
||||||
|
|
@ -275,8 +275,11 @@ type SCTaskList struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型
|
||||||
List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表
|
List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表
|
||||||
|
StartTs int64 `protobuf:"varint,3,opt,name=StartTs,proto3" json:"StartTs,omitempty"` // 开始时间
|
||||||
|
EndTs int64 `protobuf:"varint,4,opt,name=EndTs,proto3" json:"EndTs,omitempty"` // 结束时间
|
||||||
|
On bool `protobuf:"varint,5,opt,name=On,proto3" json:"On,omitempty"` // 活动开关
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SCTaskList) Reset() {
|
func (x *SCTaskList) Reset() {
|
||||||
|
|
@ -325,6 +328,27 @@ func (x *SCTaskList) GetList() []*TaskData {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *SCTaskList) GetStartTs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.StartTs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCTaskList) GetEndTs() int64 {
|
||||||
|
if x != nil {
|
||||||
|
return x.EndTs
|
||||||
|
}
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
func (x *SCTaskList) GetOn() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.On
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
// 领取任务奖励
|
// 领取任务奖励
|
||||||
// PACKET_CSTaskReward
|
// PACKET_CSTaskReward
|
||||||
type CSTaskReward struct {
|
type CSTaskReward struct {
|
||||||
|
|
@ -332,7 +356,7 @@ type CSTaskReward struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务
|
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型
|
||||||
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id; 0 表示一键领取
|
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id; 0 表示一键领取
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -461,7 +485,7 @@ type SCTaskChange struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型
|
||||||
List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表
|
List []*TaskData `protobuf:"bytes,2,rep,name=List,proto3" json:"List,omitempty"` // 任务列表
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -516,7 +540,7 @@ type CSTaskDebugInc struct {
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
Tp int32 `protobuf:"varint,1,opt,name=Tp,proto3" json:"Tp,omitempty"` // 任务类型
|
||||||
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id
|
Id int32 `protobuf:"varint,2,opt,name=Id,proto3" json:"Id,omitempty"` // 任务id
|
||||||
AddNum int32 `protobuf:"varint,3,opt,name=AddNum,proto3" json:"AddNum,omitempty"` // 直接增加次数
|
AddNum int32 `protobuf:"varint,3,opt,name=AddNum,proto3" json:"AddNum,omitempty"` // 直接增加次数
|
||||||
}
|
}
|
||||||
|
|
@ -642,59 +666,63 @@ var file_protocol_task_task_proto_rawDesc = []byte{
|
||||||
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76,
|
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76,
|
||||||
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x0a, 0x43, 0x53, 0x54, 0x61,
|
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x1c, 0x0a, 0x0a, 0x43, 0x53, 0x54, 0x61,
|
||||||
0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01,
|
0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01,
|
||||||
0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x40, 0x0a, 0x0a, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b,
|
0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x22, 0x80, 0x01, 0x0a, 0x0a, 0x53, 0x43, 0x54, 0x61, 0x73,
|
||||||
0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||||
0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20, 0x03,
|
0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x02, 0x20,
|
||||||
0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x61,
|
0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x44,
|
||||||
0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54, 0x61,
|
0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x53, 0x74, 0x61,
|
||||||
0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01,
|
0x72, 0x74, 0x54, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x53, 0x74, 0x61, 0x72,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02,
|
0x74, 0x54, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x18, 0x04, 0x20, 0x01,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x54,
|
0x28, 0x03, 0x52, 0x05, 0x45, 0x6e, 0x64, 0x54, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18,
|
||||||
0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43,
|
0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x4f, 0x6e, 0x22, 0x2e, 0x0a, 0x0c, 0x43, 0x53, 0x54,
|
||||||
|
0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18,
|
||||||
|
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18,
|
||||||
|
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x22, 0xcd, 0x01, 0x0a, 0x0c, 0x53, 0x43,
|
||||||
|
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70,
|
||||||
|
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73,
|
||||||
|
0x6b, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 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, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01,
|
||||||
|
0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
|
||||||
|
0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x43,
|
||||||
|
0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72,
|
||||||
|
0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39,
|
||||||
|
0x0a, 0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
|
||||||
|
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
||||||
|
0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
|
||||||
|
0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54,
|
||||||
|
0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18,
|
||||||
|
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73,
|
||||||
|
0x74, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54,
|
||||||
|
0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a,
|
||||||
|
0x0e, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12,
|
||||||
|
0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12,
|
||||||
|
0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12,
|
||||||
|
0x16, 0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73,
|
||||||
|
0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43,
|
||||||
0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b,
|
0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b,
|
||||||
0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f,
|
0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f,
|
||||||
0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28,
|
0x70, 0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c,
|
||||||
0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28,
|
0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75,
|
||||||
0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x18,
|
0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f,
|
||||||
0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x53, 0x43, 0x54,
|
0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b,
|
||||||
0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x2e, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64,
|
0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x1a, 0x39, 0x0a,
|
0x45, 0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16,
|
||||||
0x0b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
|
0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c,
|
||||||
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14,
|
0x69, 0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76,
|
0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18,
|
||||||
0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x42, 0x0a, 0x0c, 0x53, 0x43, 0x54, 0x61,
|
0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52,
|
||||||
0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x70, 0x18, 0x01,
|
0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x22, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74,
|
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10,
|
||||||
0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e, 0x54, 0x61,
|
0xe3, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54,
|
||||||
0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x22, 0x48, 0x0a, 0x0e,
|
0x61, 0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11,
|
||||||
0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x0e,
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e,
|
||||||
0x0a, 0x02, 0x54, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x0e,
|
0x63, 0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
||||||
0x0a, 0x02, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16,
|
0x43, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 0x42, 0x24, 0x5a, 0x22,
|
||||||
0x0a, 0x06, 0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
|
0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
||||||
0x41, 0x64, 0x64, 0x4e, 0x75, 0x6d, 0x22, 0x3c, 0x0a, 0x0e, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b,
|
0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x61,
|
||||||
0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f,
|
0x73, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x74, 0x61, 0x73, 0x6b, 0x2e,
|
|
||||||
0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x4f, 0x70,
|
|
||||||
0x43, 0x6f, 0x64, 0x65, 0x2a, 0x30, 0x0a, 0x0c, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74,
|
|
||||||
0x43, 0x6f, 0x64, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63,
|
|
||||||
0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45,
|
|
||||||
0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x2a, 0xd2, 0x01, 0x0a, 0x0c, 0x54, 0x61, 0x73, 0x6b, 0x50,
|
|
||||||
0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x14, 0x0a, 0x10, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
|
||||||
0x54, 0x5f, 0x54, 0x61, 0x73, 0x6b, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x16, 0x0a,
|
|
||||||
0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69,
|
|
||||||
0x73, 0x74, 0x10, 0xe0, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
|
||||||
0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x10, 0xe1, 0x12, 0x12, 0x18, 0x0a,
|
|
||||||
0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65,
|
|
||||||
0x77, 0x61, 0x72, 0x64, 0x10, 0xe2, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
|
||||||
0x54, 0x5f, 0x53, 0x43, 0x54, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x77, 0x61, 0x72, 0x64, 0x10, 0xe3,
|
|
||||||
0x12, 0x12, 0x18, 0x0a, 0x13, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x61,
|
|
||||||
0x73, 0x6b, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0xe4, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50,
|
|
||||||
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63,
|
|
||||||
0x10, 0xe5, 0x12, 0x12, 0x16, 0x0a, 0x11, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
|
|
||||||
0x44, 0x65, 0x62, 0x75, 0x67, 0x49, 0x6e, 0x63, 0x10, 0xe6, 0x12, 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, 0x74, 0x61, 0x73,
|
|
||||||
0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -33,18 +33,21 @@ message TaskData{
|
||||||
// 任务列表
|
// 任务列表
|
||||||
// PACKET_CSTaskList
|
// PACKET_CSTaskList
|
||||||
message CSTaskList{
|
message CSTaskList{
|
||||||
int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务 8:年兽每日任务 9:年兽活动任务 10:累计消耗任务
|
||||||
}
|
}
|
||||||
// PACKET_SCTaskList
|
// PACKET_SCTaskList
|
||||||
message SCTaskList{
|
message SCTaskList{
|
||||||
int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
int32 Tp = 1; // 任务类型
|
||||||
repeated TaskData List = 2; // 任务列表
|
repeated TaskData List = 2; // 任务列表
|
||||||
|
int64 StartTs = 3; // 开始时间
|
||||||
|
int64 EndTs = 4; // 结束时间
|
||||||
|
bool On = 5; // 活动开关
|
||||||
}
|
}
|
||||||
|
|
||||||
// 领取任务奖励
|
// 领取任务奖励
|
||||||
// PACKET_CSTaskReward
|
// PACKET_CSTaskReward
|
||||||
message CSTaskReward{
|
message CSTaskReward{
|
||||||
int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统 6:赛季通行证任务
|
int32 Tp = 1; // 任务类型
|
||||||
int32 Id = 2; // 任务id; 0 表示一键领取
|
int32 Id = 2; // 任务id; 0 表示一键领取
|
||||||
}
|
}
|
||||||
// PACKET_SCTaskReward
|
// PACKET_SCTaskReward
|
||||||
|
|
@ -58,12 +61,12 @@ message SCTaskReward{
|
||||||
// 任务变更通知
|
// 任务变更通知
|
||||||
// PACKET_SCTaskChange
|
// PACKET_SCTaskChange
|
||||||
message SCTaskChange{
|
message SCTaskChange{
|
||||||
int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
int32 Tp = 1; // 任务类型
|
||||||
repeated TaskData List = 2; // 任务列表
|
repeated TaskData List = 2; // 任务列表
|
||||||
}
|
}
|
||||||
|
|
||||||
message CSTaskDebugInc{
|
message CSTaskDebugInc{
|
||||||
int32 Tp = 1; // 任务类型 1:日常任务 2:周活跃任务 3:新手任务 4:邀请任务 5:成就系统
|
int32 Tp = 1; // 任务类型
|
||||||
int32 Id = 2; // 任务id
|
int32 Id = 2; // 任务id
|
||||||
int32 AddNum = 3; // 直接增加次数
|
int32 AddNum = 3; // 直接增加次数
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -662,6 +662,8 @@ type SCTienLenRoomInfo struct {
|
||||||
CostType int32 `protobuf:"varint,37,opt,name=CostType,proto3" json:"CostType,omitempty"` //房卡支付方式 1AA 2房主
|
CostType int32 `protobuf:"varint,37,opt,name=CostType,proto3" json:"CostType,omitempty"` //房卡支付方式 1AA 2房主
|
||||||
Voice int32 `protobuf:"varint,38,opt,name=Voice,proto3" json:"Voice,omitempty"` //是否开启语音 1开启
|
Voice int32 `protobuf:"varint,38,opt,name=Voice,proto3" json:"Voice,omitempty"` //是否开启语音 1开启
|
||||||
Password string `protobuf:"bytes,39,opt,name=Password,proto3" json:"Password,omitempty"` //房间密码
|
Password string `protobuf:"bytes,39,opt,name=Password,proto3" json:"Password,omitempty"` //房间密码
|
||||||
|
// 房卡场配置
|
||||||
|
IsSmallCard bool `protobuf:"varint,40,opt,name=IsSmallCard,proto3" json:"IsSmallCard,omitempty"` //必出最小牌
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SCTienLenRoomInfo) Reset() {
|
func (x *SCTienLenRoomInfo) Reset() {
|
||||||
|
|
@ -948,6 +950,13 @@ func (x *SCTienLenRoomInfo) GetPassword() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *SCTienLenRoomInfo) GetIsSmallCard() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.IsSmallCard
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
//房间状态更新
|
//房间状态更新
|
||||||
type SCTienLenRoomState struct {
|
type SCTienLenRoomState struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
|
|
@ -2141,6 +2150,7 @@ type SCTienLenFirstOpPos struct {
|
||||||
unknownFields protoimpl.UnknownFields
|
unknownFields protoimpl.UnknownFields
|
||||||
|
|
||||||
Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置
|
Pos int32 `protobuf:"varint,1,opt,name=Pos,proto3" json:"Pos,omitempty"` //座位位置
|
||||||
|
IsSmallCard bool `protobuf:"varint,2,opt,name=IsSmallCard,proto3" json:"IsSmallCard,omitempty"` //必出最小牌
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SCTienLenFirstOpPos) Reset() {
|
func (x *SCTienLenFirstOpPos) Reset() {
|
||||||
|
|
@ -2182,6 +2192,13 @@ func (x *SCTienLenFirstOpPos) GetPos() int32 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (x *SCTienLenFirstOpPos) GetIsSmallCard() bool {
|
||||||
|
if x != nil {
|
||||||
|
return x.IsSmallCard
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
//PACKET_SCTienLenThinkLongCnt
|
//PACKET_SCTienLenThinkLongCnt
|
||||||
type SCTienLenPlayerThinkLongCnt struct {
|
type SCTienLenPlayerThinkLongCnt struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
|
|
@ -2608,7 +2625,7 @@ var file_protocol_tienlen_tienlen_proto_rawDesc = []byte{
|
||||||
0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c,
|
0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x4c,
|
||||||
0x65, 0x76, 0x65, 0x6c, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43,
|
0x65, 0x76, 0x65, 0x6c, 0x22, 0x23, 0x0a, 0x0b, 0x4c, 0x61, 0x73, 0x74, 0x44, 0x65, 0x6c, 0x43,
|
||||||
0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
|
0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03,
|
||||||
0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0xfd, 0x08, 0x0a, 0x11, 0x53, 0x43,
|
0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x22, 0x9f, 0x09, 0x0a, 0x11, 0x53, 0x43,
|
||||||
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12,
|
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12,
|
||||||
0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74,
|
0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x43, 0x72, 0x65, 0x61, 0x74,
|
||||||
|
|
@ -2680,262 +2697,267 @@ var file_protocol_tienlen_tienlen_proto_rawDesc = []byte{
|
||||||
0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65,
|
0x6f, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65,
|
||||||
0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a,
|
0x18, 0x26, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x12, 0x1a, 0x0a,
|
||||||
0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x27, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||||
0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53, 0x43, 0x54,
|
0x08, 0x50, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x53,
|
||||||
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12,
|
0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x18, 0x28, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b,
|
||||||
0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05,
|
0x49, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x61, 0x72, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x53,
|
||||||
0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18,
|
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74,
|
||||||
0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x45, 0x0a,
|
0x65, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x11, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
|
0x52, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d,
|
||||||
0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01,
|
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22,
|
||||||
0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70,
|
0x45, 0x0a, 0x11, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79,
|
||||||
0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50,
|
0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
|
||||||
0x61, 0x72, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07,
|
||||||
0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x4f, 0x70,
|
0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f,
|
||||||
0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f,
|
0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x22, 0x8e, 0x01, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65,
|
||||||
0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x02, 0x20,
|
0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x16, 0x0a, 0x06,
|
||||||
0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12, 0x0a, 0x04,
|
0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x4f, 0x70,
|
||||||
0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64,
|
0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18,
|
||||||
0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x04, 0x20,
|
0x02, 0x20, 0x03, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x12,
|
||||||
0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x4f, 0x70,
|
0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e,
|
||||||
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65,
|
0x49, 0x64, 0x12, 0x33, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18,
|
||||||
0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e,
|
||||||
0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12, 0x2e, 0x0a,
|
0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70,
|
||||||
0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x74, 0x69,
|
0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65,
|
||||||
0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61,
|
0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x12,
|
||||||
0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22, 0x28, 0x0a,
|
0x2e, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e,
|
||||||
0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
|
0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50,
|
||||||
0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01,
|
0x6c, 0x61, 0x79, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x44, 0x61, 0x74, 0x61, 0x22,
|
||||||
0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74,
|
0x28, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79,
|
||||||
0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01,
|
0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x22, 0x6f, 0x0a, 0x07, 0x41, 0x64, 0x64,
|
||||||
0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
|
0x49, 0x74, 0x65, 0x6d, 0x12, 0x1a, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
|
||||||
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65,
|
||||||
0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69,
|
0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05,
|
||||||
0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28,
|
0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x69,
|
||||||
0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54, 0x69, 0x65,
|
0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x41, 0x64, 0x64, 0x69,
|
||||||
0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69,
|
0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x04, 0x20,
|
||||||
0x6c, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01,
|
0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0xb3, 0x02, 0x0a, 0x17, 0x54,
|
||||||
0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64,
|
|
||||||
0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x18,
|
|
||||||
0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52,
|
|
||||||
0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61, 0x6d, 0x65,
|
|
||||||
0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61, 0x6d, 0x65,
|
|
||||||
0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x05, 0x20,
|
|
||||||
0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x57, 0x69,
|
|
||||||
0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03,
|
|
||||||
0x52, 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1c,
|
|
||||||
0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28,
|
|
||||||
0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08,
|
|
||||||
0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08,
|
|
||||||
0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64, 0x64, 0x49,
|
|
||||||
0x74, 0x65, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74, 0x69, 0x65,
|
|
||||||
0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08, 0x41, 0x64,
|
|
||||||
0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75,
|
|
||||||
0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75, 0x22, 0x4d,
|
|
||||||
0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42,
|
|
||||||
0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x18, 0x01,
|
|
||||||
0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54,
|
|
||||||
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65,
|
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61, 0x6d, 0x65,
|
||||||
0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22, 0xc4, 0x01,
|
0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x01,
|
||||||
0x0a, 0x18, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c,
|
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61,
|
||||||
0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x69,
|
0x72, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73,
|
||||||
0x6e, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69, 0x6e, 0x50,
|
0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||||
0x6f, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e,
|
0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x47, 0x61,
|
||||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f,
|
0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x47, 0x61,
|
||||||
0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18, 0x03, 0x20,
|
0x6d, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b,
|
0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x12, 0x22, 0x0a, 0x0c,
|
||||||
0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28,
|
0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01,
|
||||||
0x03, 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18,
|
0x28, 0x03, 0x52, 0x0c, 0x57, 0x69, 0x6e, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65,
|
||||||
0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52,
|
0x12, 0x1c, 0x0a, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x07, 0x20,
|
||||||
0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65,
|
0x01, 0x28, 0x03, 0x52, 0x09, 0x52, 0x61, 0x6e, 0x6b, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1a,
|
||||||
0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65,
|
0x0a, 0x08, 0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x03,
|
||||||
0x43, 0x6f, 0x69, 0x6e, 0x22, 0x5b, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
|
0x52, 0x08, 0x41, 0x64, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x08, 0x41, 0x64,
|
||||||
0x6e, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x18, 0x01,
|
0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x74,
|
||||||
0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x49,
|
0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x08,
|
||||||
0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08,
|
0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x54, 0x69, 0x61, 0x6e,
|
||||||
0x52, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x12, 0x0a,
|
0x48, 0x75, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x54, 0x69, 0x61, 0x6e, 0x48, 0x75,
|
||||||
0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49,
|
0x22, 0x4d, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d,
|
||||||
0x64, 0x22, 0x88, 0x02, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43,
|
0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x36, 0x0a, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73,
|
||||||
0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65,
|
0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e,
|
||||||
0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65,
|
0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x47, 0x61,
|
||||||
0x6e, 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54,
|
0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x52, 0x05, 0x44, 0x61, 0x74, 0x61, 0x73, 0x22,
|
||||||
0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
|
0xc4, 0x01, 0x0a, 0x18, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61,
|
||||||
0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x18,
|
0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06,
|
||||||
0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x54,
|
0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x69,
|
||||||
0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x54, 0x6f,
|
0x6e, 0x50, 0x6f, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73, 0x43, 0x6f,
|
||||||
0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75,
|
0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x57, 0x69, 0x6e, 0x50, 0x6f, 0x73,
|
||||||
0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x6f, 0x75,
|
0x43, 0x6f, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x18,
|
||||||
0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20,
|
0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x12, 0x20,
|
||||||
0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12, 0x12, 0x0a,
|
0x0a, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20,
|
||||||
0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44, 0x61, 0x74,
|
0x01, 0x28, 0x03, 0x52, 0x0b, 0x4c, 0x6f, 0x73, 0x65, 0x50, 0x6f, 0x73, 0x43, 0x6f, 0x69, 0x6e,
|
||||||
0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
0x12, 0x18, 0x0a, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28,
|
||||||
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b,
|
0x03, 0x52, 0x07, 0x57, 0x69, 0x6e, 0x43, 0x6f, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f,
|
||||||
0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x4c, 0x6f,
|
||||||
0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f, 0x0a, 0x11,
|
0x73, 0x65, 0x43, 0x6f, 0x69, 0x6e, 0x22, 0x5b, 0x0a, 0x0d, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e,
|
||||||
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f,
|
0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73,
|
||||||
|
0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x20, 0x0a,
|
||||||
|
0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01,
|
||||||
|
0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x4f, 0x75, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12,
|
||||||
|
0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53,
|
||||||
|
0x6e, 0x49, 0x64, 0x22, 0x88, 0x02, 0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
|
||||||
|
0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x47, 0x72, 0x61,
|
||||||
|
0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x74, 0x69, 0x65, 0x6e,
|
||||||
|
0x6c, 0x65, 0x6e, 0x2e, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72,
|
||||||
|
0x64, 0x54, 0x65, 0x73, 0x74, 0x2e, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72,
|
||||||
|
0x79, 0x52, 0x06, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x54, 0x79, 0x70,
|
||||||
|
0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a,
|
||||||
|
0x07, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07,
|
||||||
|
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x69, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c,
|
||||||
|
0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x54, 0x6f, 0x74, 0x61, 0x6c,
|
||||||
|
0x6f, 0x75, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x18,
|
||||||
|
0x05, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x4c, 0x6f, 0x73, 0x65, 0x52, 0x61, 0x74, 0x65, 0x12,
|
||||||
|
0x12, 0x0a, 0x04, 0x44, 0x61, 0x74, 0x61, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x44,
|
||||||
|
0x61, 0x74, 0x61, 0x1a, 0x39, 0x0a, 0x0b, 0x47, 0x72, 0x61, 0x64, 0x65, 0x73, 0x45, 0x6e, 0x74,
|
||||||
|
0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20,
|
||||||
|
0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x7f,
|
||||||
|
0x0a, 0x11, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70,
|
||||||
|
0x50, 0x6f, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||||
|
0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02,
|
||||||
|
0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43,
|
||||||
|
0x61, 0x72, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64,
|
||||||
|
0x73, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01,
|
||||||
|
0x28, 0x05, 0x52, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66,
|
||||||
|
0x6c, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22,
|
||||||
|
0x3b, 0x0a, 0x19, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61,
|
||||||
|
0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a,
|
||||||
|
0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
||||||
|
0x52, 0x0a, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a,
|
||||||
|
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41,
|
||||||
|
0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75,
|
||||||
|
0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x0b, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a,
|
||||||
|
0x0f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61,
|
||||||
|
0x12, 0x19, 0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01,
|
||||||
|
0x28, 0x05, 0x52, 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43,
|
||||||
|
0x61, 0x72, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f,
|
||||||
|
0x73, 0x65, 0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50,
|
||||||
|
0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b,
|
||||||
|
0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28,
|
||||||
|
0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b,
|
||||||
|
0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28,
|
||||||
|
0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b,
|
||||||
|
0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28,
|
||||||
|
0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b,
|
||||||
|
0x4c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28,
|
||||||
|
0x09, 0x52, 0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10,
|
||||||
|
0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30,
|
||||||
|
0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73,
|
||||||
|
0x4c, 0x65, 0x66, 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72,
|
||||||
|
0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27,
|
||||||
|
0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74,
|
||||||
|
0x5f, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72,
|
||||||
|
0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63,
|
||||||
|
0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28,
|
||||||
|
0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33,
|
||||||
|
0x12, 0x28, 0x0a, 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63,
|
||||||
|
0x61, 0x72, 0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65,
|
||||||
|
0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c,
|
||||||
|
0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01,
|
||||||
|
0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30,
|
||||||
|
0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73,
|
||||||
|
0x5f, 0x31, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64,
|
||||||
|
0x43, 0x61, 0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64,
|
||||||
|
0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
|
||||||
|
0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e,
|
||||||
|
0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f,
|
||||||
|
0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64,
|
||||||
|
0x73, 0x33, 0x12, 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e,
|
||||||
|
0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50,
|
||||||
|
0x6c, 0x61, 0x79, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27,
|
||||||
|
0x0a, 0x0f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f,
|
||||||
|
0x6e, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50,
|
||||||
|
0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65,
|
||||||
|
0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d,
|
||||||
|
0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a,
|
||||||
|
0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01,
|
||||||
|
0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12,
|
||||||
|
0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18,
|
||||||
|
0x14, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74,
|
||||||
|
0x30, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f,
|
||||||
|
0x31, 0x18, 0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65,
|
||||||
|
0x66, 0x74, 0x31, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66,
|
||||||
|
0x74, 0x5f, 0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73,
|
||||||
|
0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c,
|
||||||
|
0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72,
|
||||||
|
0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f,
|
||||||
|
0x70, 0x6f, 0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50,
|
||||||
|
0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28,
|
||||||
|
0x08, 0x52, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53,
|
||||||
|
0x6e, 0x69, 0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53,
|
||||||
|
0x6e, 0x69, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20,
|
||||||
|
0x01, 0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x22, 0x49, 0x0a, 0x13, 0x53, 0x43,
|
||||||
|
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f,
|
||||||
0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
|
0x73, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03,
|
||||||
0x50, 0x6f, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x18, 0x02, 0x20, 0x01,
|
0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x49, 0x73, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x43, 0x61,
|
||||||
0x28, 0x08, 0x52, 0x05, 0x49, 0x73, 0x4e, 0x65, 0x77, 0x12, 0x14, 0x0a, 0x05, 0x43, 0x61, 0x72,
|
0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x49, 0x73, 0x53, 0x6d, 0x61, 0x6c,
|
||||||
0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12,
|
0x6c, 0x43, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x1b, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
||||||
0x18, 0x0a, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
|
0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e,
|
||||||
0x52, 0x07, 0x45, 0x78, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61,
|
0x67, 0x43, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e,
|
||||||
0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x3b, 0x0a,
|
0x67, 0x43, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e,
|
||||||
0x19, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x20, 0x53, 0x43, 0x54, 0x69,
|
||||||
0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x4d, 0x61,
|
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74,
|
||||||
0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a,
|
0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06,
|
||||||
0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x22, 0x3e, 0x0a, 0x1a, 0x53, 0x43,
|
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74,
|
||||||
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64,
|
0x65, 0x6d, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45,
|
||||||
0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x12, 0x20, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69,
|
0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52,
|
||||||
0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x41,
|
0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69,
|
||||||
0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x22, 0xcb, 0x07, 0x0a, 0x0f, 0x53,
|
0x6d, 0x65, 0x22, 0x5e, 0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50,
|
||||||
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x44, 0x61, 0x74, 0x61, 0x12, 0x19,
|
0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e,
|
||||||
0x0a, 0x08, 0x42, 0x6f, 0x6d, 0x62, 0x5f, 0x6e, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
|
0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x10,
|
||||||
0x52, 0x07, 0x42, 0x6f, 0x6d, 0x62, 0x4e, 0x75, 0x6d, 0x12, 0x2f, 0x0a, 0x14, 0x43, 0x61, 0x72,
|
0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73,
|
||||||
0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x65,
|
0x12, 0x20, 0x0a, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x18,
|
||||||
0x71, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x43, 0x61, 0x72, 0x64, 0x50, 0x6c, 0x61,
|
0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52,
|
||||||
0x79, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x71, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61,
|
0x65, 0x73, 0x22, 0x2c, 0x0a, 0x08, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
|
||||||
0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x30, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x10,
|
||||||
0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x30, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61,
|
0x0a, 0x03, 0x4e, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d,
|
||||||
0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x31, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x22, 0xab, 0x01, 0x0a, 0x16, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c,
|
||||||
0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61,
|
0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53,
|
||||||
0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x32, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x6e, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12,
|
||||||
0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x32, 0x12, 0x1e, 0x0a, 0x0b, 0x4c, 0x61,
|
0x1e, 0x0a, 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20,
|
||||||
0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x33, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x03, 0x28, 0x03, 0x52, 0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12,
|
||||||
0x09, 0x4c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x76, 0x65, 0x33, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75,
|
0x14, 0x0a, 0x05, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05,
|
||||||
0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x07,
|
0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04,
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65,
|
0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x49,
|
||||||
0x66, 0x74, 0x30, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73,
|
0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e,
|
||||||
0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e,
|
0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01,
|
||||||
0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x31, 0x12, 0x27, 0x0a, 0x10,
|
0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x4b,
|
||||||
0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x32,
|
0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65,
|
||||||
0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73,
|
0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x12, 0x33, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01,
|
||||||
0x4c, 0x65, 0x66, 0x74, 0x32, 0x12, 0x27, 0x0a, 0x10, 0x4e, 0x75, 0x6d, 0x5f, 0x63, 0x61, 0x72,
|
0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54,
|
||||||
0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52,
|
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65,
|
||||||
0x0d, 0x4e, 0x75, 0x6d, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x28,
|
0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x3e, 0x0a, 0x0c, 0x4f,
|
||||||
0x0a, 0x10, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f, 0x63, 0x61, 0x72,
|
0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0f, 0x0a, 0x0b, 0x4f,
|
||||||
0x64, 0x73, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x48,
|
0x50, 0x52, 0x43, 0x5f, 0x53, 0x75, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x0a,
|
||||||
0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79,
|
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09,
|
||||||
0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x30, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09,
|
0x4f, 0x50, 0x52, 0x43, 0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0xa2, 0x05, 0x0a, 0x0f,
|
||||||
0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x30, 0x12, 0x24,
|
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12,
|
||||||
0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x31,
|
0x16, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
|
||||||
0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61,
|
0x6e, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45,
|
||||||
0x72, 0x64, 0x73, 0x31, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x5f, 0x63,
|
0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
|
||||||
0x61, 0x72, 0x64, 0x73, 0x5f, 0x32, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c,
|
0x6e, 0x66, 0x6f, 0x10, 0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x32, 0x12, 0x24, 0x0a, 0x0e, 0x50, 0x6c,
|
0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74,
|
||||||
0x61, 0x79, 0x65, 0x64, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x33, 0x18, 0x0f, 0x20, 0x01,
|
0x61, 0x74, 0x65, 0x10, 0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x28, 0x09, 0x52, 0x0c, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x33,
|
0x5f, 0x43, 0x53, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
|
||||||
0x12, 0x2a, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x5f,
|
0x4f, 0x70, 0x10, 0xfc, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
||||||
0x63, 0x61, 0x72, 0x64, 0x73, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x50, 0x6c, 0x61,
|
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f,
|
||||||
0x79, 0x65, 0x72, 0x48, 0x61, 0x6e, 0x64, 0x43, 0x61, 0x72, 0x64, 0x73, 0x12, 0x27, 0x0a, 0x0f,
|
0x70, 0x10, 0xfd, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
||||||
0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18,
|
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e,
|
||||||
0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x6f, 0x73,
|
0x74, 0x65, 0x72, 0x10, 0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x24, 0x0a, 0x0d, 0x49, 0x73, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72,
|
||||||
0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x49, 0x73,
|
0x4c, 0x65, 0x61, 0x76, 0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x59, 0x75, 0x6c, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x49,
|
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64,
|
||||||
0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08,
|
0x10, 0x80, 0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
|
||||||
0x52, 0x0b, 0x49, 0x73, 0x46, 0x69, 0x72, 0x73, 0x74, 0x48, 0x61, 0x6e, 0x64, 0x12, 0x20, 0x0a,
|
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65,
|
||||||
0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x30, 0x18, 0x14, 0x20,
|
0x64, 0x10, 0x81, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
||||||
0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74, 0x30, 0x12,
|
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73,
|
||||||
0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f, 0x31, 0x18,
|
0x10, 0x82, 0x2a, 0x12, 0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
|
||||||
0x15, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65, 0x66, 0x74,
|
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65,
|
||||||
0x31, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66, 0x74, 0x5f,
|
0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43,
|
||||||
0x32, 0x18, 0x16, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73, 0x4c, 0x65,
|
0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64,
|
||||||
0x66, 0x74, 0x32, 0x12, 0x20, 0x0a, 0x0c, 0x43, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x6c, 0x65, 0x66,
|
0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a,
|
||||||
0x74, 0x5f, 0x33, 0x18, 0x17, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x43, 0x61, 0x72, 0x64, 0x73,
|
|
||||||
0x4c, 0x65, 0x66, 0x74, 0x33, 0x12, 0x19, 0x0a, 0x08, 0x4c, 0x61, 0x73, 0x74, 0x5f, 0x70, 0x6f,
|
|
||||||
0x73, 0x18, 0x18, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x4c, 0x61, 0x73, 0x74, 0x50, 0x6f, 0x73,
|
|
||||||
0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x18, 0x19, 0x20, 0x01, 0x28, 0x08, 0x52,
|
|
||||||
0x05, 0x49, 0x73, 0x45, 0x6e, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69,
|
|
||||||
0x64, 0x73, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x05, 0x52, 0x08, 0x57, 0x69, 0x6e, 0x53, 0x6e, 0x69,
|
|
||||||
0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x18, 0x1b, 0x20, 0x01, 0x28,
|
|
||||||
0x08, 0x52, 0x05, 0x49, 0x73, 0x57, 0x69, 0x6e, 0x22, 0x27, 0x0a, 0x13, 0x53, 0x43, 0x54, 0x69,
|
|
||||||
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x12,
|
|
||||||
0x10, 0x0a, 0x03, 0x50, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f,
|
|
||||||
0x73, 0x22, 0x41, 0x0a, 0x1b, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c,
|
|
||||||
0x61, 0x79, 0x65, 0x72, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74,
|
|
||||||
0x12, 0x22, 0x0a, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74,
|
|
||||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e,
|
|
||||||
0x67, 0x43, 0x6e, 0x74, 0x22, 0x68, 0x0a, 0x20, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
|
|
||||||
0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65,
|
|
||||||
0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d,
|
|
||||||
0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64,
|
|
||||||
0x12, 0x2c, 0x0a, 0x11, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72,
|
|
||||||
0x65, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x49, 0x74, 0x65,
|
|
||||||
0x6d, 0x52, 0x65, 0x63, 0x45, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x5e,
|
|
||||||
0x0a, 0x14, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53, 0x6b,
|
|
||||||
0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x18, 0x01,
|
|
||||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x50, 0x6f,
|
|
||||||
0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x50, 0x6f, 0x73, 0x12, 0x20, 0x0a, 0x0b,
|
|
||||||
0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28,
|
|
||||||
0x08, 0x52, 0x0b, 0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 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, 0x03, 0x52, 0x03, 0x4e, 0x75, 0x6d, 0x22, 0xab, 0x01, 0x0a,
|
|
||||||
0x16, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c,
|
|
||||||
0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x18,
|
|
||||||
0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x53, 0x6e, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x52,
|
|
||||||
0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x03, 0x52,
|
|
||||||
0x0a, 0x52, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x53,
|
|
||||||
0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x53, 0x63, 0x6f, 0x72,
|
|
||||||
0x65, 0x12, 0x27, 0x0a, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b,
|
|
||||||
0x32, 0x11, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49,
|
|
||||||
0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77, 0x61, 0x72, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f,
|
|
||||||
0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a,
|
|
||||||
0x54, 0x6f, 0x74, 0x61, 0x6c, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x4b, 0x0a, 0x14, 0x53, 0x43,
|
|
||||||
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c,
|
|
||||||
0x65, 0x64, 0x12, 0x33, 0x0a, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b,
|
|
||||||
0x32, 0x1f, 0x2e, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x2e, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
|
||||||
0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x49, 0x6e, 0x66,
|
|
||||||
0x6f, 0x52, 0x04, 0x4c, 0x69, 0x73, 0x74, 0x2a, 0x3e, 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, 0x0d, 0x0a, 0x09, 0x4f, 0x50, 0x52, 0x43,
|
|
||||||
0x5f, 0x48, 0x69, 0x6e, 0x74, 0x10, 0x02, 0x2a, 0xa2, 0x05, 0x0a, 0x0f, 0x54, 0x69, 0x65, 0x6e,
|
|
||||||
0x4c, 0x65, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x16, 0x0a, 0x12, 0x50,
|
|
||||||
0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x5a, 0x45, 0x52,
|
|
||||||
0x4f, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43,
|
|
||||||
0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10,
|
|
||||||
0xfa, 0x29, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54,
|
|
||||||
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x52, 0x6f, 0x6f, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10,
|
|
||||||
0xfb, 0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x54,
|
|
||||||
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfc,
|
|
||||||
0x29, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69,
|
|
||||||
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfd, 0x29,
|
|
||||||
0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65,
|
|
||||||
0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x10,
|
|
||||||
0xfe, 0x29, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54,
|
|
||||||
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76,
|
|
||||||
0x65, 0x10, 0xff, 0x29, 0x12, 0x19, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
|
||||||
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x10, 0x80, 0x2a, 0x12,
|
|
||||||
0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e,
|
|
||||||
0x4c, 0x65, 0x6e, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x81, 0x2a,
|
|
||||||
0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65,
|
|
||||||
0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x75, 0x72, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x82, 0x2a, 0x12,
|
|
||||||
0x24, 0x0a, 0x1f, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e,
|
|
||||||
0x4c, 0x65, 0x6e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x42, 0x69, 0x6c, 0x6c,
|
|
||||||
0x65, 0x64, 0x10, 0x83, 0x2a, 0x12, 0x25, 0x0a, 0x20, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f,
|
|
||||||
0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d,
|
|
||||||
0x61, 0x73, 0x74, 0x65, 0x72, 0x53, 0x6e, 0x69, 0x64, 0x10, 0x84, 0x2a, 0x12, 0x26, 0x0a, 0x21,
|
|
||||||
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e,
|
|
||||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75,
|
|
||||||
0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
|
||||||
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86, 0x2a, 0x12, 0x1f, 0x0a,
|
|
||||||
0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
|
|
||||||
0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10, 0x87, 0x2a, 0x12, 0x1d,
|
|
||||||
0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
|
||||||
0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88, 0x2a, 0x12, 0x21, 0x0a,
|
|
||||||
0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65,
|
|
||||||
0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e, 0x74, 0x10, 0x89, 0x2a,
|
|
||||||
0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65,
|
0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65,
|
||||||
0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76, 0x65, 0x49, 0x74, 0x65,
|
0x6e, 0x4c, 0x65, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x65, 0x6e,
|
||||||
0x6d, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x8a, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b,
|
0x63, 0x65, 0x4e, 0x75, 0x6d, 0x10, 0x85, 0x2a, 0x12, 0x17, 0x0a, 0x12, 0x50, 0x41, 0x43, 0x4b,
|
||||||
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x50, 0x65, 0x74, 0x53,
|
0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x41, 0x49, 0x10, 0x86,
|
||||||
0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x10, 0x8b, 0x2a, 0x12, 0x20, 0x0a, 0x1b, 0x50, 0x41,
|
0x2a, 0x12, 0x1f, 0x0a, 0x1a, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69,
|
||||||
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x79,
|
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x4f, 0x70, 0x50, 0x6f, 0x73, 0x10,
|
||||||
0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x8c, 0x2a, 0x42, 0x27, 0x5a, 0x25,
|
0x87, 0x2a, 0x12, 0x1d, 0x0a, 0x18, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54,
|
||||||
0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f,
|
0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x43, 0x61, 0x72, 0x64, 0x54, 0x65, 0x73, 0x74, 0x10, 0x88,
|
||||||
0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x74, 0x69,
|
0x2a, 0x12, 0x21, 0x0a, 0x1c, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69,
|
||||||
0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x54, 0x68, 0x69, 0x6e, 0x6b, 0x4c, 0x6f, 0x6e, 0x67, 0x43, 0x6e,
|
||||||
|
0x74, 0x10, 0x89, 0x2a, 0x12, 0x26, 0x0a, 0x21, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
||||||
|
0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e, 0x46, 0x69, 0x72, 0x73, 0x74, 0x47, 0x69, 0x76,
|
||||||
|
0x65, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x74, 0x65, 0x6d, 0x10, 0x8a, 0x2a, 0x12, 0x20, 0x0a, 0x1b,
|
||||||
|
0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c, 0x65, 0x6e,
|
||||||
|
0x50, 0x65, 0x74, 0x53, 0x6b, 0x69, 0x6c, 0x6c, 0x52, 0x65, 0x73, 0x10, 0x8b, 0x2a, 0x12, 0x20,
|
||||||
|
0x0a, 0x1b, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x54, 0x69, 0x65, 0x6e, 0x4c,
|
||||||
|
0x65, 0x6e, 0x43, 0x79, 0x63, 0x6c, 0x65, 0x42, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0x8c, 0x2a,
|
||||||
|
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, 0x74, 0x69, 0x65, 0x6e, 0x6c, 0x65, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||||
|
0x33,
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
|
||||||
|
|
@ -126,6 +126,7 @@ message SCTienLenRoomInfo {
|
||||||
int32 Voice = 38; //是否开启语音 1开启
|
int32 Voice = 38; //是否开启语音 1开启
|
||||||
string Password = 39; //房间密码
|
string Password = 39; //房间密码
|
||||||
// 房卡场配置
|
// 房卡场配置
|
||||||
|
bool IsSmallCard = 40; //必出最小牌
|
||||||
}
|
}
|
||||||
|
|
||||||
//房间状态更新
|
//房间状态更新
|
||||||
|
|
@ -257,6 +258,7 @@ message SCTienLenAIData {
|
||||||
//PACKET_SCTienLenFirstOpPos
|
//PACKET_SCTienLenFirstOpPos
|
||||||
message SCTienLenFirstOpPos {
|
message SCTienLenFirstOpPos {
|
||||||
int32 Pos = 1;//座位位置
|
int32 Pos = 1;//座位位置
|
||||||
|
bool IsSmallCard = 2; //必出最小牌
|
||||||
}
|
}
|
||||||
|
|
||||||
//PACKET_SCTienLenThinkLongCnt
|
//PACKET_SCTienLenThinkLongCnt
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1047,3 +1047,131 @@ message UserLottery{
|
||||||
int64 Num = 5; // 第几期
|
int64 Num = 5; // 第几期
|
||||||
int32 On = 6; // 开关 1开启 2关闭
|
int32 On = 6; // 开关 1开启 2关闭
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message PigBankDiamondInfo {
|
||||||
|
|
||||||
|
int32 Id = 1;
|
||||||
|
|
||||||
|
int32 BuyCountMin = 2;
|
||||||
|
|
||||||
|
int32 BuyCountMax = 3;
|
||||||
|
|
||||||
|
int32 CostDiamond = 4;
|
||||||
|
|
||||||
|
int32 MaxGold = 5;
|
||||||
|
|
||||||
|
int32 MaxDiamond = 6;
|
||||||
|
|
||||||
|
int32 DiamondId = 7;
|
||||||
|
|
||||||
|
int32 CoinPrice = 8;
|
||||||
|
|
||||||
|
int32 DiamondPrice = 9;
|
||||||
|
|
||||||
|
int32 DiamondNowPrice = 10;
|
||||||
|
|
||||||
|
repeated ItemInfo GoldExc = 11;
|
||||||
|
|
||||||
|
repeated ItemInfo DiamondExc = 12;
|
||||||
|
}
|
||||||
|
|
||||||
|
// etcd /game/pigbank_diamond
|
||||||
|
message GamePigBankDiamondConfig{
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
repeated PigBankDiamondInfo DiamondInfo = 2; // 存钱罐消耗信息
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message PigBankPropInfo {
|
||||||
|
|
||||||
|
int32 Id = 1;
|
||||||
|
|
||||||
|
string PorpName = 2;
|
||||||
|
|
||||||
|
int32 PropValue = 3;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// etcd /game/pigbank_prop
|
||||||
|
message GamePigBankPropConfig{
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
repeated PigBankPropInfo PropInfo = 2; // 存钱罐属性
|
||||||
|
}
|
||||||
|
//etcd /game/activity_nian
|
||||||
|
message ActivityNianConfig {
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
repeated NianInfo List = 2;
|
||||||
|
int32 Switch = 3; // 活动开关 1.开启 2.关闭
|
||||||
|
}
|
||||||
|
|
||||||
|
message NianInfo{
|
||||||
|
string ActivityStart = 1; // 活动开始时间
|
||||||
|
string ActivityEnd = 2; // 活动结束时间
|
||||||
|
int64 BuffStartTime = 3; //Buff领取开始时间 18
|
||||||
|
int64 BuffEndTime = 4; //Buff领取结束时间 21
|
||||||
|
repeated ItemInfo SignReward = 5; // 签到奖励
|
||||||
|
repeated ItemInfo BossDieReward = 6; // 击杀BOSS奖励
|
||||||
|
repeated NianDropInfo BossDieOtherReward = 7; // 击杀Boss额外奖励
|
||||||
|
}
|
||||||
|
message NianDropInfo{
|
||||||
|
int32 Id = 1;
|
||||||
|
int32 ItemId = 2; // 物品ID
|
||||||
|
int64 ItemNum = 3; // 物品数量
|
||||||
|
int32 DropRate = 4;//掉落概率
|
||||||
|
int32 DropUp = 5;//掉落上限
|
||||||
|
}
|
||||||
|
//年兽排行榜奖励
|
||||||
|
//etcd /game/activity_nian_rank
|
||||||
|
message NianRankReward{
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
repeated NianRankData RankData = 2;
|
||||||
|
}
|
||||||
|
message NianRankData{
|
||||||
|
int32 TypeId = 1; //1-幸运榜 2-伤害榜
|
||||||
|
repeated NianRankAwardInfo RankInfo = 2;
|
||||||
|
}
|
||||||
|
message NianRankAwardInfo{
|
||||||
|
int32 RankId =1;//排名
|
||||||
|
repeated ItemInfo Award = 2; //奖励
|
||||||
|
}
|
||||||
|
|
||||||
|
// etcd /game/act_redpacket
|
||||||
|
message RedPacketConfig{
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
repeated RedPacketInfo List = 2; // 活动列表
|
||||||
|
int32 PlayerLimit = 3; // 玩家最大领取红包次数 0无限制
|
||||||
|
}
|
||||||
|
|
||||||
|
message RedPacketInfo{
|
||||||
|
int64 Id = 1; // 配置id
|
||||||
|
int32 On = 2; // 开关 1开启 2关闭
|
||||||
|
int64 StartHMS = 3; // 开始时间,时*10000 + 分*100 + 秒
|
||||||
|
int64 EndHMS = 4; // 结束时间,时*10000 + 分*100 + 秒
|
||||||
|
int64 StayTs = 5; // 持续时长,单位秒
|
||||||
|
int64 MaxCount = 6; // 每人最大领取次数 0无限制
|
||||||
|
int64 LessCount = 7; // 保底红包个数
|
||||||
|
int32 ItemId = 8; // 奖励类型(道具id,100001金币 100002钻石)
|
||||||
|
int64 TotalNum = 9; // 总奖励数量
|
||||||
|
repeated RedInfo RedList = 10; // 红包奖励列表
|
||||||
|
}
|
||||||
|
|
||||||
|
message RedInfo{
|
||||||
|
int64 Num = 1; // 数量
|
||||||
|
int64 Rate = 2; // 概率,百分比
|
||||||
|
}
|
||||||
|
|
||||||
|
// etcd /game/act_consume
|
||||||
|
message ConsumeConfig{
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
int32 On = 2; // 活动开关 1.开启 2.关闭
|
||||||
|
string StartTime = 3; // 活动开始时间
|
||||||
|
string EndTime = 4; // 活动结束时间
|
||||||
|
}
|
||||||
|
|
||||||
|
// etcd /game/act_pushcoin
|
||||||
|
message PushCoinConfig{
|
||||||
|
string Platform = 1; // 平台
|
||||||
|
int32 On = 2; // 活动开关 1.开启 2.关闭
|
||||||
|
string StartTime = 3; // 活动开始时间
|
||||||
|
string EndTime = 4; // 活动结束时间
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -84,6 +84,12 @@ enum SPacketID {
|
||||||
PACKET_SCLotteryInfo = 2927; // 抽奖信息
|
PACKET_SCLotteryInfo = 2927; // 抽奖信息
|
||||||
PACKET_NotifyLotteryAward = 2928; // 通知抽奖中奖
|
PACKET_NotifyLotteryAward = 2928; // 通知抽奖中奖
|
||||||
PACKET_NotifyLotteryCode = 2929; // 通知获得抽奖号码
|
PACKET_NotifyLotteryCode = 2929; // 通知获得抽奖号码
|
||||||
|
|
||||||
|
PACKET_CSRedPacketInfo = 2930; // 红包信息
|
||||||
|
PACKET_SCRedPacketInfo = 2931; // 红包信息
|
||||||
|
|
||||||
|
PACKET_CSRedPacketDraw = 2932; // 抽红包
|
||||||
|
PACKET_SCRedPacketDraw = 2933; // 抽红包
|
||||||
}
|
}
|
||||||
|
|
||||||
//救济金领取
|
//救济金领取
|
||||||
|
|
@ -336,6 +342,17 @@ message SCBindInvite{
|
||||||
OpResultCode OpRetCode = 1; //结果
|
OpResultCode OpRetCode = 1; //结果
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
message PigBankCoinInfo{
|
||||||
|
int32 IndexId = 1;
|
||||||
|
int64 TakeCoin = 2; //
|
||||||
|
int64 BankMaxCoin = 3; // 存钱罐最大储存值
|
||||||
|
int32 DayBuyMaxCnt = 4; // 今日最大可购买次数
|
||||||
|
int64 Price = 5; //原价
|
||||||
|
int64 CostDiamond = 6; //现价
|
||||||
|
map<int64, int64> GoldExc = 7; // 奖励道具
|
||||||
|
}
|
||||||
|
|
||||||
// 存钱罐信息
|
// 存钱罐信息
|
||||||
//PACKET_CSPigbankGetInfo
|
//PACKET_CSPigbankGetInfo
|
||||||
message CSPigbankGetInfo{
|
message CSPigbankGetInfo{
|
||||||
|
|
@ -347,13 +364,9 @@ message SCPigbankGetInfo{
|
||||||
OpResultCode OpRetCode = 1; //结果
|
OpResultCode OpRetCode = 1; //结果
|
||||||
int64 BankCoin = 2; // 当前已存金额
|
int64 BankCoin = 2; // 当前已存金额
|
||||||
int32 TakeTimes = 3; // 领取次数
|
int32 TakeTimes = 3; // 领取次数
|
||||||
int64 CostDiamond = 4; // 耗费钻石
|
repeated PigBankCoinInfo infoArr = 4;
|
||||||
int64 BankMaxCoin = 5; // 存钱罐最储存值
|
|
||||||
int32 DayBuyMaxCnt = 6; // 今日最大可购买次数
|
|
||||||
int64 Price = 7; //消耗钻石原价
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// 存钱罐领取金币
|
// 存钱罐领取金币
|
||||||
//PACKET_CSPigbankTakeCoin
|
//PACKET_CSPigbankTakeCoin
|
||||||
message CSPigbankTakeCoin{
|
message CSPigbankTakeCoin{
|
||||||
|
|
@ -365,10 +378,7 @@ message SCPigbankTakeCoin{
|
||||||
OpResultCode OpRetCode = 1; // 结果
|
OpResultCode OpRetCode = 1; // 结果
|
||||||
int64 TakeCoinNum = 2; // 领取金币数量
|
int64 TakeCoinNum = 2; // 领取金币数量
|
||||||
int32 TakeTimes = 3; // 领取次数
|
int32 TakeTimes = 3; // 领取次数
|
||||||
int64 CostDiamond = 4; // 耗费钻石
|
repeated PropInfo RewardItems = 4;
|
||||||
int64 BankMaxCoin = 5; // 存钱罐最储存值
|
|
||||||
int32 DayBuyMaxCnt = 6; // 今日最大可购买次数
|
|
||||||
int64 Price = 7; //消耗钻石原价
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 钻石存钱罐信息
|
// 钻石存钱罐信息
|
||||||
|
|
@ -376,17 +386,24 @@ message SCPigbankTakeCoin{
|
||||||
message CSDiamondBankGetInfo{
|
message CSDiamondBankGetInfo{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message PigBankDiamondInfo{
|
||||||
|
int32 IndexId = 1;
|
||||||
|
double TakeDiamond = 2; //
|
||||||
|
int64 BankMaxDiamond = 3; // 存钱罐最大储存值
|
||||||
|
int32 DayBuyMaxCnt = 4; // 今日最大可购买次数
|
||||||
|
int64 Price = 5; //原价
|
||||||
|
int64 NowPrice = 6; //现价
|
||||||
|
int32 ShopId = 7; //商城ID
|
||||||
|
map<int64, int64> DiamondExc = 8;
|
||||||
|
}
|
||||||
|
|
||||||
// 钻石存钱罐信息
|
// 钻石存钱罐信息
|
||||||
//PACKET_SCDiamondBankGetInfo
|
//PACKET_SCDiamondBankGetInfo
|
||||||
message SCDiamondBankGetInfo{
|
message SCDiamondBankGetInfo{
|
||||||
OpResultCode OpRetCode = 1; //结果
|
OpResultCode OpRetCode = 1; //结果
|
||||||
double BankDiamond = 2; // 当前已存钻石
|
double BankDiamond = 2; // 当前已存钻石
|
||||||
int32 TakeTimes = 3; // 领取次数
|
int32 TakeTimes = 3; // 领取次数
|
||||||
int64 BankMaxCoin = 4; // 存钱罐最大储存值
|
repeated PigBankDiamondInfo infoArr = 4; // 奖励道具
|
||||||
int32 DayBuyMaxCnt = 5; // 今日最大可购买次数
|
|
||||||
int64 Price = 6; //原价
|
|
||||||
int64 NowPrice = 7; //现价
|
|
||||||
int32 ShopId = 8; //商城ID
|
|
||||||
}
|
}
|
||||||
// 钻石存钱罐领取金币
|
// 钻石存钱罐领取金币
|
||||||
//PACKET_SCDiamondBankTakeDiamond
|
//PACKET_SCDiamondBankTakeDiamond
|
||||||
|
|
@ -394,11 +411,7 @@ message SCDiamondBankTakeDiamond{
|
||||||
OpResultCode OpRetCode = 1; // 结果
|
OpResultCode OpRetCode = 1; // 结果
|
||||||
double TakeDiamondNum = 2; // 领取钻石数量
|
double TakeDiamondNum = 2; // 领取钻石数量
|
||||||
int32 TakeTimes = 3; // 领取次数
|
int32 TakeTimes = 3; // 领取次数
|
||||||
int64 BankMaxDiamond = 4; // 存钱罐最大储存值
|
//repeated PropInfo RewardItems = 4;
|
||||||
int32 DayBuyMaxCnt = 5; // 今日最大可购买次数
|
|
||||||
int64 Price = 6; //原价
|
|
||||||
int64 NowPrice = 7; //现价
|
|
||||||
int32 ShopId = 8; //商城ID
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 赛季通行证信息
|
// 赛季通行证信息
|
||||||
|
|
@ -550,3 +563,33 @@ message NotifyLotteryAward{
|
||||||
message NotifyLotteryCode{
|
message NotifyLotteryCode{
|
||||||
repeated LotteryInfo Info = 1;
|
repeated LotteryInfo Info = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 红包信息
|
||||||
|
//PACKET_CSRedPacketInfo
|
||||||
|
message CSRedPacketInfo{
|
||||||
|
}
|
||||||
|
//PACKET_SCRedPacketInfo
|
||||||
|
message SCRedPacketInfo{
|
||||||
|
repeated RedPacketInfo Info = 1; // 红包信息
|
||||||
|
}
|
||||||
|
message RedPacketInfo{
|
||||||
|
int64 Id = 1; // id
|
||||||
|
int64 StartTs = 2; // 开始时间
|
||||||
|
int64 EndTs = 3; // 结束时间
|
||||||
|
int64 StayTs = 4; // 持续时长,单位秒;0代表不限制
|
||||||
|
int64 RemainCount = 5; // 剩余次数;-1代表不限制
|
||||||
|
bool IsJoin = 6; // 是否参与过
|
||||||
|
}
|
||||||
|
|
||||||
|
// 抽红包
|
||||||
|
//PACKET_CSRedPacketDraw
|
||||||
|
message CSRedPacketDraw{
|
||||||
|
int64 Id = 1; // 活动id RedPacketInfo.Id 0表示参与过当前的抽奖活动了
|
||||||
|
}
|
||||||
|
//PACKET_SCRedPacketDraw
|
||||||
|
message SCRedPacketDraw{
|
||||||
|
OpResultCode OpRetCode = 1; // 错误码
|
||||||
|
int64 Id = 2; // id
|
||||||
|
repeated PropInfo Award = 3; // 奖励
|
||||||
|
int64 RemainCount = 4; // 剩余次数;-1代表不限制
|
||||||
|
}
|
||||||
|
|
@ -32,6 +32,10 @@ func init() {
|
||||||
com.Register(int(rankproto.Rank_PACKET_CSRoomAward), rankproto.CSRoomAward{}, CSRoomAward)
|
com.Register(int(rankproto.Rank_PACKET_CSRoomAward), rankproto.CSRoomAward{}, CSRoomAward)
|
||||||
// 竞技馆获奖记录
|
// 竞技馆获奖记录
|
||||||
com.Register(int(rankproto.Rank_PACKET_CSLotteryHistory), rankproto.CSLotteryHistory{}, CSLotteryHistory)
|
com.Register(int(rankproto.Rank_PACKET_CSLotteryHistory), rankproto.CSLotteryHistory{}, CSLotteryHistory)
|
||||||
|
//年兽排行榜
|
||||||
|
com.Register(int(rankproto.Rank_PACKET_RANK_CSNian), rankproto.CSNian{}, CSNian)
|
||||||
|
// 红包历史记录
|
||||||
|
com.Register(int(rankproto.Rank_PACKET_CSRedPacketHistory), rankproto.CSRedPacketHistory{}, CSRedPacketHistory)
|
||||||
}
|
}
|
||||||
|
|
||||||
func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
|
func CSRankMatch(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
|
||||||
|
|
@ -646,3 +650,172 @@ func CSLotteryHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int
|
||||||
})
|
})
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func CSNian(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
|
||||||
|
logger.Logger.Trace("CSNian data:", data)
|
||||||
|
msg, ok := data.(*rankproto.CSNian)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if msg.TypeId == 1 {
|
||||||
|
rank.NianLuckMgrInstance.Take(d.Platform, 0, func(list []*model.NianInfo, err error) {
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("CSNian error: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
page := msg.GetPage()
|
||||||
|
if page < 0 {
|
||||||
|
page = 0
|
||||||
|
}
|
||||||
|
pageSize := msg.GetPageSize()
|
||||||
|
if pageSize < 1 {
|
||||||
|
pageSize = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
start := page * pageSize
|
||||||
|
end := start + pageSize
|
||||||
|
if end >= int32(len(list)) {
|
||||||
|
end = int32(len(list))
|
||||||
|
}
|
||||||
|
|
||||||
|
var i int32
|
||||||
|
var ranks []*rankproto.NianRankData
|
||||||
|
if end > start && int(start) < len(list) {
|
||||||
|
for _, v := range list[start:end] {
|
||||||
|
r := &rankproto.NianRankData{
|
||||||
|
Snid: v.SnId,
|
||||||
|
Name: v.Name,
|
||||||
|
Score: v.Luck,
|
||||||
|
Rank: start + i,
|
||||||
|
ModId: v.ModId,
|
||||||
|
}
|
||||||
|
ranks = append(ranks, r)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var me *rankproto.NianRankData
|
||||||
|
for k, v := range list {
|
||||||
|
if v.SnId == d.Snid {
|
||||||
|
me = &rankproto.NianRankData{
|
||||||
|
Snid: v.SnId,
|
||||||
|
Name: v.Name,
|
||||||
|
Score: v.Luck,
|
||||||
|
Rank: int32(k),
|
||||||
|
ModId: v.ModId,
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pack := &rankproto.SCNian{
|
||||||
|
Ranks: ranks,
|
||||||
|
Me: me,
|
||||||
|
Page: page,
|
||||||
|
PageSize: pageSize,
|
||||||
|
Total: int32(len(list)),
|
||||||
|
}
|
||||||
|
pack.TypeId = msg.TypeId
|
||||||
|
common.SendToGate(sid, int(rankproto.Rank_PACKET_RANK_SCNian), pack, s)
|
||||||
|
logger.Logger.Tracef("SCNian: %v", pack)
|
||||||
|
})
|
||||||
|
} else if msg.TypeId == 2 {
|
||||||
|
rank.NianDamageMgrInstance.Take(d.Platform, 0, func(list []*model.NianInfo, err error) {
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("CSNian error: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
page := msg.GetPage()
|
||||||
|
if page < 0 {
|
||||||
|
page = 0
|
||||||
|
}
|
||||||
|
pageSize := msg.GetPageSize()
|
||||||
|
if pageSize < 1 {
|
||||||
|
pageSize = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
start := page * pageSize
|
||||||
|
end := start + pageSize
|
||||||
|
if end >= int32(len(list)) {
|
||||||
|
end = int32(len(list))
|
||||||
|
}
|
||||||
|
|
||||||
|
var i int32
|
||||||
|
var ranks []*rankproto.NianRankData
|
||||||
|
if end > start && int(start) < len(list) {
|
||||||
|
for _, v := range list[start:end] {
|
||||||
|
r := &rankproto.NianRankData{
|
||||||
|
Snid: v.SnId,
|
||||||
|
Name: v.Name,
|
||||||
|
Score: v.Damage,
|
||||||
|
Rank: start + i,
|
||||||
|
ModId: v.ModId,
|
||||||
|
}
|
||||||
|
ranks = append(ranks, r)
|
||||||
|
i++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var me *rankproto.NianRankData
|
||||||
|
for k, v := range list {
|
||||||
|
if v.SnId == d.Snid {
|
||||||
|
me = &rankproto.NianRankData{
|
||||||
|
Snid: v.SnId,
|
||||||
|
Name: v.Name,
|
||||||
|
Score: v.Damage,
|
||||||
|
Rank: int32(k),
|
||||||
|
ModId: v.ModId,
|
||||||
|
}
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pack := &rankproto.SCNian{
|
||||||
|
Ranks: ranks,
|
||||||
|
Me: me,
|
||||||
|
Page: page,
|
||||||
|
PageSize: pageSize,
|
||||||
|
Total: int32(len(list)),
|
||||||
|
}
|
||||||
|
pack.TypeId = msg.TypeId
|
||||||
|
common.SendToGate(sid, int(rankproto.Rank_PACKET_RANK_SCNian), pack, s)
|
||||||
|
logger.Logger.Tracef("SCCoin: %v", pack)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func CSRedPacketHistory(s *netlib.Session, d *rankproto.GateTransmit, packetId int, data interface{}, sid int64) error {
|
||||||
|
logger.Logger.Trace("CSRedPacketHistory data:", data)
|
||||||
|
msg, ok := data.(*rankproto.CSRedPacketHistory)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
pack := &rankproto.SCRedPacketHistory{}
|
||||||
|
|
||||||
|
var list []*model.RedPacketHistory
|
||||||
|
var err error
|
||||||
|
task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} {
|
||||||
|
list, err = model.GetRedPacketHistory(d.Platform, d.Snid, msg.GetId())
|
||||||
|
if err != nil {
|
||||||
|
logger.Logger.Errorf("GetRedPacketHistory error: %v", err)
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) {
|
||||||
|
if err == nil {
|
||||||
|
for _, v := range list {
|
||||||
|
pack.List = append(pack.List, &rankproto.RedPacketHistory{
|
||||||
|
Ts: v.Ts,
|
||||||
|
ItemId: v.ItemId,
|
||||||
|
ItemNum: v.ItemNum,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
common.SendToGate(sid, int(rankproto.Rank_PACKET_SCRedPacketHistory), pack, s)
|
||||||
|
}), "CSRedPacketHistory").Start()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package rank
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
"mongo.games.com/game/ranksrv/com"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
var NianDamageMgrInstance = com.NewListMgr[*model.NianInfo](
|
||||||
|
func() int64 {
|
||||||
|
return int64(model.GameParamData.RankTimeout)
|
||||||
|
},
|
||||||
|
func(platform string, index int32) ([]*model.NianInfo, error) {
|
||||||
|
logger.Logger.Tracef("load rank nian luck platform:%s", platform)
|
||||||
|
list, err := model.FindDamageNianRankList(&model.FindNianListArgs{
|
||||||
|
Platform: platform,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return list.List, nil
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
package rank
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
"mongo.games.com/game/ranksrv/com"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
)
|
||||||
|
|
||||||
|
var NianLuckMgrInstance = com.NewListMgr[*model.NianInfo](
|
||||||
|
func() int64 {
|
||||||
|
return int64(model.GameParamData.RankTimeout)
|
||||||
|
},
|
||||||
|
func(platform string, index int32) ([]*model.NianInfo, error) {
|
||||||
|
logger.Logger.Tracef("load rank nian luck platform:%s", platform)
|
||||||
|
list, err := model.FindLuckNianRankList(&model.FindNianListArgs{
|
||||||
|
Platform: platform,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return list.List, nil
|
||||||
|
})
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
// Code generated by xlsx2proto.
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
package srvdata
|
||||||
|
|
||||||
|
import (
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
|
||||||
|
"mongo.games.com/game/protocol/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
var PBDB_ACTPushCoinMgr = &DB_ACTPushCoinMgr{
|
||||||
|
Datas: &server.DB_ACTPushCoinArray{},
|
||||||
|
pool: make(map[int32]*server.DB_ACTPushCoin),
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
type DB_ACTPushCoinMgr struct {
|
||||||
|
Datas *server.DB_ACTPushCoinArray
|
||||||
|
pool map[int32]*server.DB_ACTPushCoin
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_ACTPushCoinMgr) unmarshal(data []byte) error {
|
||||||
|
err := proto.Unmarshal(data, this.Datas)
|
||||||
|
if err == nil {
|
||||||
|
this.arrangeData()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_ACTPushCoinMgr) reunmarshal(data []byte) error {
|
||||||
|
newDatas := &server.DB_ACTPushCoinArray{}
|
||||||
|
err := proto.Unmarshal(data, newDatas)
|
||||||
|
if err == nil {
|
||||||
|
for _, item := range newDatas.Arr {
|
||||||
|
existItem := this.GetData(item.GetId())
|
||||||
|
if existItem == nil {
|
||||||
|
this.pool[item.GetId()] = item
|
||||||
|
this.Datas.Arr = append(this.Datas.Arr, item)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
*existItem = *item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_ACTPushCoinMgr) arrangeData() {
|
||||||
|
if this.Datas == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
dataArr := this.Datas.GetArr()
|
||||||
|
if dataArr == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, data := range dataArr {
|
||||||
|
this.pool[data.GetId()] = data
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_ACTPushCoinMgr) GetData(id int32) *server.DB_ACTPushCoin {
|
||||||
|
if data, ok := this.pool[id]; ok {
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
DataMgr.register("DB_ACTPushCoin.dat", &ProtobufDataLoader{dh: PBDB_ACTPushCoinMgr})
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,77 @@
|
||||||
|
|
||||||
|
// Code generated by xlsx2proto.
|
||||||
|
// DO NOT EDIT!
|
||||||
|
|
||||||
|
package srvdata
|
||||||
|
|
||||||
|
import (
|
||||||
|
"google.golang.org/protobuf/proto"
|
||||||
|
|
||||||
|
"mongo.games.com/game/protocol/server"
|
||||||
|
)
|
||||||
|
|
||||||
|
var PBDB_NewYearActivityMgr = &DB_NewYearActivityMgr{
|
||||||
|
Datas: &server.DB_NewYearActivityArray{},
|
||||||
|
pool: make(map[int32]*server.DB_NewYearActivity),
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
type DB_NewYearActivityMgr struct {
|
||||||
|
Datas *server.DB_NewYearActivityArray
|
||||||
|
pool map[int32]*server.DB_NewYearActivity
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_NewYearActivityMgr) unmarshal(data []byte) error {
|
||||||
|
err := proto.Unmarshal(data, this.Datas)
|
||||||
|
if err == nil {
|
||||||
|
this.arrangeData()
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_NewYearActivityMgr) reunmarshal(data []byte) error {
|
||||||
|
newDatas := &server.DB_NewYearActivityArray{}
|
||||||
|
err := proto.Unmarshal(data, newDatas)
|
||||||
|
if err == nil {
|
||||||
|
for _, item := range newDatas.Arr {
|
||||||
|
existItem := this.GetData(item.GetId())
|
||||||
|
if existItem == nil {
|
||||||
|
this.pool[item.GetId()] = item
|
||||||
|
this.Datas.Arr = append(this.Datas.Arr, item)
|
||||||
|
|
||||||
|
} else {
|
||||||
|
*existItem = *item
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_NewYearActivityMgr) arrangeData() {
|
||||||
|
if this.Datas == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
dataArr := this.Datas.GetArr()
|
||||||
|
if dataArr == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, data := range dataArr {
|
||||||
|
this.pool[data.GetId()] = data
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *DB_NewYearActivityMgr) GetData(id int32) *server.DB_NewYearActivity {
|
||||||
|
if data, ok := this.pool[id]; ok {
|
||||||
|
return data
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
DataMgr.register("DB_NewYearActivity.dat", &ProtobufDataLoader{dh: PBDB_NewYearActivityMgr})
|
||||||
|
}
|
||||||
|
|
@ -2,7 +2,6 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"golang.org/x/exp/maps"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/mozillazg/go-pinyin"
|
"github.com/mozillazg/go-pinyin"
|
||||||
|
|
@ -111,7 +110,7 @@ func (e *ExcelMgr) Save(id int, startTime, endTime string) error {
|
||||||
|
|
||||||
filename := fmt.Sprintf("%s_%s_%s.xlsx", d.DataName, startTime, endTime)
|
filename := fmt.Sprintf("%s_%s_%s.xlsx", d.DataName, startTime, endTime)
|
||||||
|
|
||||||
if VP.GetBool("IsDatabaseMode") {
|
if true {
|
||||||
rows, err := d.GetRows("Sheet1")
|
rows, err := d.GetRows("Sheet1")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|
@ -127,21 +126,20 @@ func (e *ExcelMgr) Save(id int, startTime, endTime string) error {
|
||||||
index := make(map[string]string)
|
index := make(map[string]string)
|
||||||
for _, v := range d.Head {
|
for _, v := range d.Head {
|
||||||
cl := ChineseToPinYin([]string{v})[0]
|
cl := ChineseToPinYin([]string{v})[0]
|
||||||
d.TableHead = append(d.TableHead, cl)
|
|
||||||
files[cl] = v
|
files[cl] = v
|
||||||
if strings.Contains(v, "*") {
|
if strings.Contains(v, "*") {
|
||||||
index[cl] = "INDEX"
|
index[cl] = "INDEX"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
createSQL := buildCreateTableSQLWithIndices(d.TableName, d.DataName, files, index)
|
createSQL := buildCreateTableSQLWithIndices(d.TableName, d.DataName, d.TableHead, files, index)
|
||||||
|
|
||||||
if err = db.Exec(createSQL).Error; err != nil {
|
if err = db.Exec(createSQL).Error; err != nil {
|
||||||
logger.Logger.Errorf("createTable error: %v", err)
|
logger.Logger.Errorf("createTable error: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = insertData(db.DB, d.TableName, maps.Keys(files), rows); err != nil {
|
if err = insertData(db.DB, d.TableName, d.TableHead, rows); err != nil {
|
||||||
logger.Logger.Errorf("insertData error: %v", err)
|
logger.Logger.Errorf("insertData error: %v", err)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
@ -195,12 +193,13 @@ func (e *ExcelMgr) Pull(id int, startTime, endTime string) (*excelize.File, stri
|
||||||
}
|
}
|
||||||
|
|
||||||
// 构建创建表的 SQL 语句,支持中文描述和索引
|
// 构建创建表的 SQL 语句,支持中文描述和索引
|
||||||
func buildCreateTableSQLWithIndices(tableName string, comment string, fields map[string]string, indices map[string]string) string {
|
func buildCreateTableSQLWithIndices(tableName string, comment string, head []string, fields map[string]string, indices map[string]string) string {
|
||||||
var columns []string
|
var columns []string
|
||||||
var indexDefs []string
|
var indexDefs []string
|
||||||
|
|
||||||
// 遍历字段定义
|
// 遍历字段定义
|
||||||
for field, comment := range fields {
|
for _, field := range head {
|
||||||
|
comment := fields[field]
|
||||||
column := fmt.Sprintf("`%s` VARCHAR(255) COMMENT '%s'", field, comment)
|
column := fmt.Sprintf("`%s` VARCHAR(255) COMMENT '%s'", field, comment)
|
||||||
columns = append(columns, column)
|
columns = append(columns, column)
|
||||||
|
|
||||||
|
|
@ -234,7 +233,7 @@ func insertData(db *gorm.DB, tableName string, header []string, rows [][]string)
|
||||||
|
|
||||||
insertSQL := fmt.Sprintf("INSERT INTO `%s` (%s) VALUES (%s)", tableName, "`"+strings.Join(header, "`,`")+"`", placeholders)
|
insertSQL := fmt.Sprintf("INSERT INTO `%s` (%s) VALUES (%s)", tableName, "`"+strings.Join(header, "`,`")+"`", placeholders)
|
||||||
|
|
||||||
for _, row := range rows {
|
for _, row := range rows[1:] {
|
||||||
// 确保每行数据长度和表头一致
|
// 确保每行数据长度和表头一致
|
||||||
if len(row) < len(header) {
|
if len(row) < len(header) {
|
||||||
for len(row) < len(header) {
|
for len(row) < len(header) {
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,8 @@ data_type 数据类型
|
||||||
3新用户平均局数
|
3新用户平均局数
|
||||||
4平均倍数
|
4平均倍数
|
||||||
5活跃破产率
|
5活跃破产率
|
||||||
start_time 开始时间
|
start_time 开始时间 格式:2024-12-26
|
||||||
end_time 结束时间
|
end_time 结束时间 格式:2024-12-26
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// Download 下载
|
// Download 下载
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,6 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"mongo.games.com/goserver/core/utils"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
|
|
@ -13,6 +12,7 @@ import (
|
||||||
"mongo.games.com/goserver/core/logger"
|
"mongo.games.com/goserver/core/logger"
|
||||||
"mongo.games.com/goserver/core/mongox"
|
"mongo.games.com/goserver/core/mongox"
|
||||||
"mongo.games.com/goserver/core/mysqlx"
|
"mongo.games.com/goserver/core/mysqlx"
|
||||||
|
"mongo.games.com/goserver/core/utils"
|
||||||
"mongo.games.com/goserver/core/viperx"
|
"mongo.games.com/goserver/core/viperx"
|
||||||
|
|
||||||
"mongo.games.com/game/common"
|
"mongo.games.com/game/common"
|
||||||
|
|
@ -39,8 +39,8 @@ var ExcelMgrSingle *ExcelMgr
|
||||||
|
|
||||||
func run() {
|
func run() {
|
||||||
if VP.GetBool("IsDatabaseMode") {
|
if VP.GetBool("IsDatabaseMode") {
|
||||||
VP.Set("StartTime", common.HMSToTime(0, 0, 0).Format(time.RFC3339))
|
VP.Set("StartTime", common.HMSToTime(0, 0, 0).AddDate(0, 0, -1).Format(time.RFC3339))
|
||||||
VP.Set("EndTime", common.HMSToTime(0, 0, 0).AddDate(0, 0, 1).Format(time.RFC3339))
|
VP.Set("EndTime", common.HMSToTime(0, 0, 0).Format(time.RFC3339))
|
||||||
}
|
}
|
||||||
|
|
||||||
startTime, err := time.Parse(time.RFC3339, VP.GetString("StartTime"))
|
startTime, err := time.Parse(time.RFC3339, VP.GetString("StartTime"))
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,95 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"math/rand"
|
||||||
|
"mongo.games.com/goserver/core/timer"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
"mongo.games.com/game/proto"
|
||||||
|
loginproto "mongo.games.com/game/protocol/login"
|
||||||
|
playerproto "mongo.games.com/game/protocol/player"
|
||||||
|
)
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
// 心跳
|
||||||
|
netlib.Register(int(loginproto.GatePacketID_PACKET_SC_PONG), loginproto.SCPong{}, SCPong)
|
||||||
|
// 登录
|
||||||
|
netlib.Register(int(loginproto.LoginPacketID_PACKET_SC_LOGIN), loginproto.SCLogin{}, SCLogin)
|
||||||
|
// 玩家信息
|
||||||
|
netlib.Register(int(playerproto.PlayerPacketID_PACKET_SC_PLAYERDATA), playerproto.SCPlayerData{}, SCPlayerData)
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCPong(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
accountID := s.GetAttribute(SessionAttributeClientAccountId)
|
||||||
|
logger.Logger.Tracef("SCPong username:%v %v", accountID, data)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCLogin(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
logger.Logger.Trace("SCLogin ", data)
|
||||||
|
|
||||||
|
msg, ok := data.(*loginproto.SCLogin)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if msg.GetOpRetCode() != loginproto.OpResultCode_OPRC_Sucess {
|
||||||
|
accountID := s.GetAttribute(SessionAttributeClientAccountId)
|
||||||
|
logger.Logger.Error("登录失败 ", accountID)
|
||||||
|
s.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
csPlayerData := &playerproto.CSPlayerData{
|
||||||
|
AccId: msg.GetAccId(),
|
||||||
|
}
|
||||||
|
pp := &model.PlayerParams{
|
||||||
|
Platform: 1,
|
||||||
|
Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)),
|
||||||
|
City: "北京",
|
||||||
|
Logininmodel: "app",
|
||||||
|
}
|
||||||
|
d, err := json.Marshal(pp)
|
||||||
|
if err == nil {
|
||||||
|
csPlayerData.Params = proto.String(string(d))
|
||||||
|
}
|
||||||
|
|
||||||
|
s.Send(int(playerproto.PlayerPacketID_PACKET_CS_PLAYERDATA), csPlayerData)
|
||||||
|
logger.Logger.Info("登录成功 ", msg.GetAccId())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func SCPlayerData(s *netlib.Session, packetid int, data interface{}) error {
|
||||||
|
logger.Logger.Trace("SCPlayerData ", data)
|
||||||
|
msg, ok := data.(*playerproto.SCPlayerData)
|
||||||
|
if !ok {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if msg.GetOpRetCode() != playerproto.OpResultCode_OPRC_Sucess {
|
||||||
|
accountID := s.GetAttribute(SessionAttributeClientAccountId)
|
||||||
|
logger.Logger.Errorf("获取玩家信息失败 %v", accountID)
|
||||||
|
s.Close()
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
s.SetAttribute(SessionAttributeUser, msg)
|
||||||
|
|
||||||
|
StartSessionPingTimer(s, timer.TimerActionWrapper(func(h timer.TimerHandle, ud interface{}) bool {
|
||||||
|
if !s.IsConned() {
|
||||||
|
StopSessionPingTimer(s)
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
pack := &loginproto.CSPing{}
|
||||||
|
s.Send(int(loginproto.GatePacketID_PACKET_CS_PING), pack)
|
||||||
|
return true
|
||||||
|
}), nil, time.Second*time.Duration(60+rand.Int31n(100)), -1)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/goserver/core"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
)
|
||||||
|
|
||||||
|
var Config = &Configuration{}
|
||||||
|
|
||||||
|
type Configuration struct {
|
||||||
|
Count int // 机器人总数
|
||||||
|
AppId string // appID
|
||||||
|
Connects netlib.SessionConfig // 网络连接配置
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Configuration) Name() string {
|
||||||
|
return "benchmark"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Configuration) Init() error {
|
||||||
|
logger.Logger.Tracef("%+v", *this)
|
||||||
|
if this.Count == 0 {
|
||||||
|
this.Count = 20
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *Configuration) Close() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
core.RegistePackage(Config)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,65 @@
|
||||||
|
netlib:
|
||||||
|
SrvInfo:
|
||||||
|
Name: BenchmarkServer
|
||||||
|
Type: 9
|
||||||
|
Id: 902
|
||||||
|
AreaID: 1
|
||||||
|
Banner:
|
||||||
|
- =================
|
||||||
|
- benchmark server
|
||||||
|
- =================
|
||||||
|
IoServices: []
|
||||||
|
module:
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 100
|
||||||
|
executor:
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 0
|
||||||
|
Worker:
|
||||||
|
WorkerCnt: 8
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 0
|
||||||
|
timer:
|
||||||
|
Options:
|
||||||
|
QueueBacklog: 1024
|
||||||
|
MaxDone: 1024
|
||||||
|
Interval: 100
|
||||||
|
signal:
|
||||||
|
SupportSignal: true
|
||||||
|
benchmark:
|
||||||
|
Count: 100
|
||||||
|
AppId: 5c56d1644966f078bfb90c71
|
||||||
|
Connects:
|
||||||
|
Id: 402
|
||||||
|
Type: 4
|
||||||
|
AreaId: 1
|
||||||
|
Name: ClientService
|
||||||
|
Ip: 127.0.0.1
|
||||||
|
Port: 11001
|
||||||
|
Protocol: tcp
|
||||||
|
Path: /
|
||||||
|
MaxDone: 200
|
||||||
|
MaxPend: 200
|
||||||
|
MaxPacket: 65535
|
||||||
|
MaxConn: 2000
|
||||||
|
RcvBuff: 4096
|
||||||
|
SndBuff: 4096
|
||||||
|
WriteTimeout: 3600
|
||||||
|
ReadTimeout: 3600
|
||||||
|
SoLinger: 10
|
||||||
|
IsInnerLink: true
|
||||||
|
NoDelay: true
|
||||||
|
SupportFragment: true
|
||||||
|
AuthKey: www.jxjy.games.cn
|
||||||
|
IsClient: true
|
||||||
|
AllowMultiConn: true
|
||||||
|
FilterChain:
|
||||||
|
- session-filter-auth
|
||||||
|
HandlerChain:
|
||||||
|
- handler-gate-session
|
||||||
|
|
@ -0,0 +1,69 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/module"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
// RobotSessionStartId 机器人session开始id
|
||||||
|
RobotSessionStartId = 100000000
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
BenchMarkModule = &BenchMark{}
|
||||||
|
WaitConnectSessions []*netlib.SessionConfig
|
||||||
|
)
|
||||||
|
|
||||||
|
// NewSession 新建session
|
||||||
|
// id 连接id, 默认自动分配
|
||||||
|
func NewSession(id ...int) {
|
||||||
|
cfg := Config.Connects
|
||||||
|
if len(id) > 0 && id[0] > 0 {
|
||||||
|
cfg.Id = id[0]
|
||||||
|
} else {
|
||||||
|
BenchMarkModule.idx++
|
||||||
|
cfg.Id = BenchMarkModule.idx
|
||||||
|
}
|
||||||
|
cfg.Init()
|
||||||
|
logger.Logger.Info("waite connect session id=", cfg.Id)
|
||||||
|
WaitConnectSessions = append(WaitConnectSessions, &cfg)
|
||||||
|
}
|
||||||
|
|
||||||
|
type BenchMark struct {
|
||||||
|
idx int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BenchMark) ModuleName() string {
|
||||||
|
return "benchmark-module"
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BenchMark) Init() {
|
||||||
|
m.idx = RobotSessionStartId
|
||||||
|
for i := 0; i < Config.Count; i++ {
|
||||||
|
NewSession()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update 机器开始连接游戏服务器
|
||||||
|
func (m *BenchMark) Update() {
|
||||||
|
n := len(WaitConnectSessions)
|
||||||
|
if n > 0 {
|
||||||
|
config := WaitConnectSessions[n-1]
|
||||||
|
WaitConnectSessions = WaitConnectSessions[:n-1]
|
||||||
|
if err := netlib.Connect(config); err != nil {
|
||||||
|
logger.Logger.Error("netlib.Connect error", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (m *BenchMark) Shutdown() {
|
||||||
|
module.UnregisteModule(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
module.RegisteModule(BenchMarkModule, time.Millisecond, 1)
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
"mongo.games.com/goserver/core/timer"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
SessionAttributeClientAccountId int = iota // 账号
|
||||||
|
SessionAttributeUser
|
||||||
|
SessionAttributePingTimer
|
||||||
|
)
|
||||||
|
|
||||||
|
func StartSessionPingTimer(s *netlib.Session, act timer.TimerAction, ud interface{}, interval time.Duration, times int) bool {
|
||||||
|
StopSessionPingTimer(s)
|
||||||
|
if hTimer, ok := timer.StartTimer(act, ud, interval, times); ok {
|
||||||
|
s.SetAttribute(SessionAttributePingTimer, hTimer)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func StopSessionPingTimer(s *netlib.Session) {
|
||||||
|
if h, ok := s.GetAttribute(SessionAttributePingTimer).(timer.TimerHandle); ok {
|
||||||
|
if h != timer.TimerHandle(0) {
|
||||||
|
timer.StopTimer(h)
|
||||||
|
s.RemoveAttribute(SessionAttributePingTimer)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,97 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"crypto/md5"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"math/rand"
|
||||||
|
"mongo.games.com/game/common"
|
||||||
|
"mongo.games.com/game/model"
|
||||||
|
loginproto "mongo.games.com/game/protocol/login"
|
||||||
|
"mongo.games.com/goserver/core/logger"
|
||||||
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
"strconv"
|
||||||
|
"sync/atomic"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
/*
|
||||||
|
添加到客户端管理器,管理器负责登录
|
||||||
|
当连接断开时,从管理器中移除,判断是否需要重连
|
||||||
|
*/
|
||||||
|
|
||||||
|
const (
|
||||||
|
GateSessionHandlerName = "handler-gate-session"
|
||||||
|
)
|
||||||
|
|
||||||
|
type GateSessionHandler struct {
|
||||||
|
netlib.BasicSessionHandler
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) GetName() string {
|
||||||
|
return GateSessionHandlerName
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) GetInterestOps() uint {
|
||||||
|
return 1<<netlib.InterestOps_Opened |
|
||||||
|
1<<netlib.InterestOps_Closed
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) OnSessionOpened(s *netlib.Session) {
|
||||||
|
// 登录账号
|
||||||
|
StartLogin(s)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (g *GateSessionHandler) OnSessionClosed(s *netlib.Session) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
netlib.RegisteSessionHandlerCreator(GateSessionHandlerName, func() netlib.SessionHandler {
|
||||||
|
return &GateSessionHandler{}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var UserNameIndex int64
|
||||||
|
|
||||||
|
func StartLogin(s *netlib.Session) {
|
||||||
|
ts := time.Now().UnixNano()
|
||||||
|
username := fmt.Sprintf("benchmark-%v", atomic.AddInt64(&UserNameIndex, 1))
|
||||||
|
s.SetAttribute(SessionAttributeClientAccountId, username)
|
||||||
|
csLogin := &loginproto.CSLogin{
|
||||||
|
Username: username,
|
||||||
|
TimeStamp: ts,
|
||||||
|
Platform: "1",
|
||||||
|
Channel: "",
|
||||||
|
PlatformTag: "test.win88.yy_android",
|
||||||
|
}
|
||||||
|
|
||||||
|
params := &model.PlayerParams{
|
||||||
|
Ip: fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255)),
|
||||||
|
City: "北京",
|
||||||
|
Platform: 1,
|
||||||
|
Logininmodel: "app",
|
||||||
|
}
|
||||||
|
data, err := json.Marshal(params)
|
||||||
|
if err == nil {
|
||||||
|
csLogin.Params = string(data[:])
|
||||||
|
}
|
||||||
|
|
||||||
|
h := md5.New()
|
||||||
|
io.WriteString(h, fmt.Sprintf("%v%v", username, Config.AppId))
|
||||||
|
pwd := hex.EncodeToString(h.Sum(nil))
|
||||||
|
h.Reset()
|
||||||
|
io.WriteString(h, fmt.Sprintf("%v%v%v", pwd, Config.AppId, ts))
|
||||||
|
pwd = hex.EncodeToString(h.Sum(nil))
|
||||||
|
csLogin.Password = pwd
|
||||||
|
|
||||||
|
csLogin.LoginType = 0
|
||||||
|
csLogin.Sign = common.MakeMd5String(csLogin.GetUsername(), csLogin.GetPassword(),
|
||||||
|
strconv.Itoa(int(csLogin.GetTimeStamp())), csLogin.GetParams(), Config.AppId)
|
||||||
|
|
||||||
|
s.Send(int(loginproto.LoginPacketID_PACKET_CS_LOGIN), csLogin)
|
||||||
|
logger.Logger.Infof("账号 [%v] 开始登录", username)
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue