Compare commits
6 Commits
a9ec52b183
...
17c6f74c3e
| Author | SHA1 | Date |
|---|---|---|
|
|
17c6f74c3e | |
|
|
c6ec268dc4 | |
|
|
32dd3a61d2 | |
|
|
49fea13b3a | |
|
|
67a1006ff0 | |
|
|
bf36baa5f3 |
|
|
@ -1,12 +1,11 @@
|
||||||
|
|
||||||
иб†
|
в† ЁГ
|
||||||
о±к
|
ив†
|
||||||
фв†
|
Р†
|
||||||
в†
|
Вв† Ќ
|
||||||
иа†
|
Ь±к ђN
|
||||||
ив†
|
о±к Р†
|
||||||
|
ъўЌ Ќ
|
||||||
Ь±к
|
иб† Р†
|
||||||
ъўЌ
|
¶а† °к
|
||||||
|
d»к ЂВЧ/
|
||||||
жЩ
|
|
||||||
|
|
@ -2,65 +2,75 @@
|
||||||
"Arr": [
|
"Arr": [
|
||||||
{
|
{
|
||||||
"Id": 1,
|
"Id": 1,
|
||||||
"Rate": 1000,
|
|
||||||
"Gain": {
|
|
||||||
"50017": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Id": 2,
|
|
||||||
"Rate": 750,
|
|
||||||
"Gain": {
|
|
||||||
"30001": 5
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Id": 3,
|
|
||||||
"Rate": 500,
|
|
||||||
"Gain": {
|
|
||||||
"50018": 20
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Id": 4,
|
|
||||||
"Rate": 4000,
|
"Rate": 4000,
|
||||||
"Gain": {
|
"Gain": {
|
||||||
"50018": 5
|
"50018": 5
|
||||||
}
|
},
|
||||||
|
"Value": 25000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Id": 5,
|
"Id": 2,
|
||||||
"Rate": 1000,
|
|
||||||
"Gain": {
|
|
||||||
"50016": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Id": 6,
|
|
||||||
"Rate": 1000,
|
"Rate": 1000,
|
||||||
"Gain": {
|
"Gain": {
|
||||||
"50018": 10
|
"50018": 10
|
||||||
}
|
},
|
||||||
|
"Value": 50000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Id": 7,
|
"Id": 3,
|
||||||
|
"Rate": 450,
|
||||||
|
"Gain": {
|
||||||
|
"50018": 20
|
||||||
|
},
|
||||||
|
"Value": 100000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 4,
|
||||||
"Rate": 1500,
|
"Rate": 1500,
|
||||||
"Gain": {
|
"Gain": {
|
||||||
"30001": 1
|
"30001": 1
|
||||||
}
|
},
|
||||||
|
"Value": 10000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Id": 8,
|
"Id": 5,
|
||||||
|
"Rate": 750,
|
||||||
|
"Gain": {
|
||||||
|
"30001": 5
|
||||||
|
},
|
||||||
|
"Value": 50000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 6,
|
||||||
"Rate": 250,
|
"Rate": 250,
|
||||||
"Gain": {
|
"Gain": {
|
||||||
"100002": 1
|
"100002": 1
|
||||||
}
|
},
|
||||||
|
"Value": 100000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 7,
|
||||||
|
"Rate": 1000,
|
||||||
|
"Gain": {
|
||||||
|
"50017": 1
|
||||||
|
},
|
||||||
|
"Value": 50000
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Id": 8,
|
||||||
|
"Rate": 950,
|
||||||
|
"Gain": {
|
||||||
|
"50016": 1
|
||||||
|
},
|
||||||
|
"Value": 30000
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"Id": 9,
|
"Id": 9,
|
||||||
|
"Rate": 100,
|
||||||
"Gain": {
|
"Gain": {
|
||||||
"77030": 1
|
"30011": 1
|
||||||
}
|
},
|
||||||
|
"Value": 100000000
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
BIN
data/DB_Task.dat
BIN
data/DB_Task.dat
Binary file not shown.
|
|
@ -1,22 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
// 房间类型
|
|
||||||
const (
|
|
||||||
RoomMode_Classic int = iota //经典
|
|
||||||
RoomMode_Max
|
|
||||||
)
|
|
||||||
|
|
||||||
// 场景状态
|
|
||||||
const (
|
|
||||||
GatesOfOlympusStateStart int = iota //默认状态
|
|
||||||
GatesOfOlympusStateMax
|
|
||||||
)
|
|
||||||
|
|
||||||
// 玩家操作
|
|
||||||
const (
|
|
||||||
GatesOfOlympusPlayerOpStart int = iota
|
|
||||||
GatesOfOlympusPlayerOpSwitch
|
|
||||||
)
|
|
||||||
const NowByte int64 = 10000
|
|
||||||
|
|
||||||
const GameDataKey = "FortuneData"
|
|
||||||
|
|
@ -1,46 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"mongo.games.com/game/common"
|
|
||||||
"mongo.games.com/game/gamesrv/base"
|
|
||||||
"mongo.games.com/game/protocol/gatesofolympus"
|
|
||||||
"mongo.games.com/goserver/core/logger"
|
|
||||||
"mongo.games.com/goserver/core/netlib"
|
|
||||||
)
|
|
||||||
|
|
||||||
type CSGatesOfOlympusOpPacketFactory struct {
|
|
||||||
}
|
|
||||||
type CSGatesOfOlympusOpHandler struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *CSGatesOfOlympusOpPacketFactory) CreatePacket() interface{} {
|
|
||||||
pack := &gatesofolympus.CSGatesOfOlympusOp{}
|
|
||||||
return pack
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *CSGatesOfOlympusOpHandler) Process(s *netlib.Session, packetid int, data interface{}, sid int64) error {
|
|
||||||
if op, ok := data.(*gatesofolympus.CSGatesOfOlympusOp); ok {
|
|
||||||
p := base.PlayerMgrSington.GetPlayer(sid)
|
|
||||||
if p == nil {
|
|
||||||
logger.Logger.Warn("CSGatesOfOlympusOpHandler p == nil")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
scene := p.GetScene()
|
|
||||||
if scene == nil {
|
|
||||||
logger.Logger.Warn("CSGatesOfOlympusOpHandler p.scene == nil")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if !scene.HasPlayer(p) {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if scene.GetScenePolicy() != nil {
|
|
||||||
scene.GetScenePolicy().OnPlayerOp(scene, p, int(op.GetOpCode()), op.GetParams())
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func init() {
|
|
||||||
common.RegisterHandler(int(gatesofolympus.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP), &CSGatesOfOlympusOpHandler{})
|
|
||||||
netlib.RegisterFactory(int(gatesofolympus.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP), &CSGatesOfOlympusOpPacketFactory{})
|
|
||||||
}
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"mongo.games.com/game/gamerule/gatesofolympus"
|
|
||||||
"mongo.games.com/game/gamesrv/base"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots"
|
|
||||||
)
|
|
||||||
|
|
||||||
type GatesOfOlympusPlayerData struct {
|
|
||||||
*base.Player
|
|
||||||
base.LabaLog
|
|
||||||
leaveTime int32 //离开时间
|
|
||||||
SlotsSession *base.SlotsSession
|
|
||||||
|
|
||||||
BetSizeIndex int64 `json:"bsi"` //选中的单注下标
|
|
||||||
BetLevelIndex int64 `json:"bli"` //选中的等级下标
|
|
||||||
BetLineIndex int64 `json:"bii"` //选中的线数下标
|
|
||||||
BetMode int64 `json:"bm,optional"` //0.常规 1.%125 2.购买
|
|
||||||
|
|
||||||
taxCoin int64
|
|
||||||
winCoin int64
|
|
||||||
currentLogId string
|
|
||||||
totalBet int64
|
|
||||||
|
|
||||||
isFree bool //只用于判断是否可以离开
|
|
||||||
}
|
|
||||||
type LinkPositions struct {
|
|
||||||
Positions []int64 `json:"Positions,omitempty"`
|
|
||||||
}
|
|
||||||
type CustomEliminate struct {
|
|
||||||
LinkPositions []*LinkPositions `json:"LinkPositions,omitempty"` //消除的位置
|
|
||||||
AppendSymbols [][]int64 `json:"AppendSymbols,omitempty"` //新增
|
|
||||||
FormattedSymbols [][]int64 `json:"FormattedSymbols,omitempty"` //最终的结果
|
|
||||||
LinePays []float64 `json:"LinePays,omitempty"` //赔付
|
|
||||||
WinCoins []float64 `json:"WinCoins,omitempty"` //输赢
|
|
||||||
MultiStr string `json:"multi_str,omitempty"`
|
|
||||||
MultiStrVal string `json:"multi_str_val,omitempty"`
|
|
||||||
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
|
|
||||||
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
|
|
||||||
}
|
|
||||||
type SpinLock struct {
|
|
||||||
CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"`
|
|
||||||
Pay float64 `json:"Pay,omitempty"`
|
|
||||||
Multi int64 `json:"Multi,omitempty"`
|
|
||||||
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
|
|
||||||
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *GatesOfOlympusPlayerData) init() {
|
|
||||||
p.SlotsSession = base.NewSession(uint64(p.SnId), p.Coin*gatesofolympus.NowByte)
|
|
||||||
}
|
|
||||||
func (p *GatesOfOlympusPlayerData) Clear() {
|
|
||||||
p.taxCoin = 0
|
|
||||||
p.winCoin = 0
|
|
||||||
p.currentLogId = ""
|
|
||||||
p.LabaLog.Clear()
|
|
||||||
}
|
|
||||||
|
|
||||||
// 需要带到world上进行数据处理
|
|
||||||
func (p *GatesOfOlympusPlayerData) PushPlayer() map[string]string {
|
|
||||||
cache := slots.SlotsMgrSington.PushPlayer(p.SlotsSession)
|
|
||||||
return cache
|
|
||||||
}
|
|
||||||
|
|
||||||
// 进房的时候需要带进来
|
|
||||||
func (p *GatesOfOlympusPlayerData) PullPlayer(data map[string]string) {
|
|
||||||
slots.SlotsMgrSington.PullPlayer(p.SlotsSession, data)
|
|
||||||
}
|
|
||||||
|
|
@ -1,45 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"mongo.games.com/game/gamesrv/base"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/assemble"
|
|
||||||
)
|
|
||||||
|
|
||||||
type GatesOfOlympusSceneData struct {
|
|
||||||
*base.Scene //场景
|
|
||||||
players map[int32]*GatesOfOlympusPlayerData //玩家信息
|
|
||||||
BetConfig *assemble.BetConfig
|
|
||||||
}
|
|
||||||
|
|
||||||
func NewGatesOfOlympusSceneData(s *base.Scene) *GatesOfOlympusSceneData {
|
|
||||||
sceneEx := &GatesOfOlympusSceneData{
|
|
||||||
Scene: s,
|
|
||||||
players: make(map[int32]*GatesOfOlympusPlayerData),
|
|
||||||
}
|
|
||||||
sceneEx.Init()
|
|
||||||
return sceneEx
|
|
||||||
}
|
|
||||||
func (s *GatesOfOlympusSceneData) Init() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *GatesOfOlympusSceneData) Clear() {
|
|
||||||
//应该是水池变一次就判断修改一次
|
|
||||||
//s.slotRateWeight = s.slotRateWeightTotal[0]
|
|
||||||
}
|
|
||||||
func (s *GatesOfOlympusSceneData) SceneDestroy(force bool) {
|
|
||||||
//销毁房间
|
|
||||||
s.Scene.Destroy(force)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (s *GatesOfOlympusSceneData) delPlayer(SnId int32) {
|
|
||||||
if _, exist := s.players[SnId]; exist {
|
|
||||||
delete(s.players, SnId)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (s *GatesOfOlympusSceneData) OnPlayerLeave(p *base.Player, reason int) {
|
|
||||||
if /*playerEx*/ _, ok := p.ExtraData.(*GatesOfOlympusPlayerData); ok {
|
|
||||||
|
|
||||||
}
|
|
||||||
s.delPlayer(p.SnId)
|
|
||||||
}
|
|
||||||
|
|
@ -1,585 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"mongo.games.com/game/common"
|
|
||||||
"mongo.games.com/game/gamerule/gatesofolympus"
|
|
||||||
"mongo.games.com/game/gamesrv/base"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/assemble"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots"
|
|
||||||
"mongo.games.com/game/model"
|
|
||||||
"mongo.games.com/game/proto"
|
|
||||||
protocol "mongo.games.com/game/protocol/gatesofolympus"
|
|
||||||
"mongo.games.com/game/protocol/server"
|
|
||||||
"mongo.games.com/goserver/core"
|
|
||||||
"mongo.games.com/goserver/core/logger"
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
// ////////////////////////////////////////////////////////////
|
|
||||||
var ScenePolicyGatesOfOlympusSington = &ScenePolicyGatesOfOlympus{}
|
|
||||||
|
|
||||||
type ScenePolicyGatesOfOlympus struct {
|
|
||||||
base.BaseScenePolicy
|
|
||||||
states [gatesofolympus.GatesOfOlympusStateMax]base.SceneState
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建场景扩展数据
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) CreateSceneExData(s *base.Scene) interface{} {
|
|
||||||
sceneEx := NewGatesOfOlympusSceneData(s)
|
|
||||||
if sceneEx != nil {
|
|
||||||
if sceneEx.GetInit() {
|
|
||||||
s.SetExtraData(sceneEx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sceneEx
|
|
||||||
}
|
|
||||||
|
|
||||||
// 创建玩家扩展数据
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) CreatePlayerExData(s *base.Scene, p *base.Player) interface{} {
|
|
||||||
playerEx := &GatesOfOlympusPlayerData{Player: p}
|
|
||||||
p.SetExtraData(playerEx)
|
|
||||||
return playerEx
|
|
||||||
}
|
|
||||||
|
|
||||||
// 场景开启事件
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnStart(s *base.Scene) {
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnStart, sceneId=", s.GetSceneId())
|
|
||||||
sceneEx := NewGatesOfOlympusSceneData(s)
|
|
||||||
if sceneEx != nil {
|
|
||||||
if sceneEx.GetInit() {
|
|
||||||
s.SetExtraData(sceneEx)
|
|
||||||
s.ChangeSceneState(gatesofolympus.GatesOfOlympusStateStart)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 场景关闭事件
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnStop(s *base.Scene) {
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnStop , sceneId=", s.GetSceneId())
|
|
||||||
}
|
|
||||||
|
|
||||||
// 场景心跳事件
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnTick(s *base.Scene) {
|
|
||||||
if s == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if s.GetSceneState() != nil {
|
|
||||||
s.GetSceneState().OnTick(s)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家进入事件
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerEnter(s *base.Scene, p *base.Player) {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerEnter, sceneId=", s.GetSceneId(), " player=", p.Name)
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
playerEx := &GatesOfOlympusPlayerData{Player: p}
|
|
||||||
|
|
||||||
playerEx.init()
|
|
||||||
|
|
||||||
d := p.GameData[gatesofolympus.GameDataKey]
|
|
||||||
if d != nil {
|
|
||||||
m := make(map[string]string)
|
|
||||||
json.Unmarshal(d.Data.([]byte), &m)
|
|
||||||
playerEx.PullPlayer(m)
|
|
||||||
} else {
|
|
||||||
m := make(map[string]string)
|
|
||||||
//json.Unmarshal(d.Data.([]byte), &m)
|
|
||||||
playerEx.PullPlayer(m)
|
|
||||||
}
|
|
||||||
|
|
||||||
playerEx.SlotsSession.SetCoin(playerEx.Coin * gatesofolympus.NowByte)
|
|
||||||
|
|
||||||
playerEx.Clear()
|
|
||||||
|
|
||||||
sceneEx.players[p.SnId] = playerEx
|
|
||||||
|
|
||||||
p.SetExtraData(playerEx)
|
|
||||||
GatesOfOlympusSendRoomInfo(s, sceneEx, playerEx)
|
|
||||||
|
|
||||||
s.FirePlayerEvent(p, base.PlayerEventEnter, nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家离开事件
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerLeave(s *base.Scene, p *base.Player, reason int) {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerLeave, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
|
||||||
if playerEx, ok := p.ExtraData.(*GatesOfOlympusPlayerData); ok {
|
|
||||||
playerEx.LabaLog.Save(2) // 没有收到结束消息,算2秒游戏时长
|
|
||||||
m := playerEx.PushPlayer()
|
|
||||||
if m != nil && len(m) > 0 {
|
|
||||||
b, err := json.Marshal(m)
|
|
||||||
if err != nil {
|
|
||||||
logger.Logger.Error("OnPlayerLeave, json.Marshal error:", err)
|
|
||||||
} else {
|
|
||||||
p.GameData[gatesofolympus.GameDataKey] = &model.PlayerGameData{
|
|
||||||
Platform: p.Platform,
|
|
||||||
SnId: p.SnId,
|
|
||||||
Id: gatesofolympus.GameDataKey,
|
|
||||||
Data: b,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if sceneEx, ok := s.ExtraData.(*GatesOfOlympusSceneData); ok {
|
|
||||||
s.FirePlayerEvent(p, base.PlayerEventLeave, nil)
|
|
||||||
sceneEx.OnPlayerLeave(p, reason)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家掉线
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerDropLine(s *base.Scene, p *base.Player) {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerDropLine, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
|
||||||
s.FirePlayerEvent(p, base.PlayerEventDropLine, nil)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家重连
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerRehold(s *base.Scene, p *base.Player) {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerRehold, sceneId=", s.GetSceneId(), " player=", p.SnId)
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok {
|
|
||||||
GatesOfOlympusSendRoomInfo(s, sceneEx, playerEx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 返回房间
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerReturn(s *base.Scene, p *base.Player) {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerReturn, GetSceneId()=", s.GetSceneId(), " player=", p.Name)
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok {
|
|
||||||
//if p.IsMarkFlag(base.PlayerState_Auto) {
|
|
||||||
// p.UnmarkFlag(base.PlayerState_Auto)
|
|
||||||
// p.SyncFlag()
|
|
||||||
//}
|
|
||||||
//发送房间信息给自己
|
|
||||||
GatesOfOlympusSendRoomInfo(s, sceneEx, playerEx)
|
|
||||||
s.FirePlayerEvent(p, base.PlayerEventReturn, nil)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func GatesOfOlympusSendRoomInfo(s *base.Scene, sceneEx *GatesOfOlympusSceneData, playerEx *GatesOfOlympusPlayerData) {
|
|
||||||
pack := GatesOfOlympusCreateRoomInfoPacket(s, sceneEx, playerEx)
|
|
||||||
logger.Logger.Trace("RoomInfo: ", pack)
|
|
||||||
playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMINFO), pack)
|
|
||||||
}
|
|
||||||
func GatesOfOlympusCreateRoomInfoPacket(s *base.Scene, sceneEx *GatesOfOlympusSceneData, playerEx *GatesOfOlympusPlayerData) interface{} {
|
|
||||||
//房间信息
|
|
||||||
pack := &protocol.SCGatesOfOlympusRoomInfo{
|
|
||||||
RoomId: s.SceneId,
|
|
||||||
GameId: s.GameId,
|
|
||||||
RoomMode: s.SceneMode,
|
|
||||||
SceneType: s.GetSceneType(),
|
|
||||||
Params: common.CopySliceInt64ToInt32(s.Params),
|
|
||||||
NumOfGames: proto.Int(sceneEx.NumOfGames),
|
|
||||||
State: proto.Int(s.SceneState.GetState()),
|
|
||||||
ParamsEx: s.GetDBGameFree().OtherIntParams,
|
|
||||||
GameFreeId: proto.Int32(s.GetDBGameFree().Id),
|
|
||||||
//BetLimit: s.GetDBGameFree().BetLimit,
|
|
||||||
}
|
|
||||||
|
|
||||||
//自己的信息
|
|
||||||
if playerEx != nil {
|
|
||||||
pd := &protocol.GatesOfOlympusPlayerData{
|
|
||||||
SnId: proto.Int32(playerEx.SnId),
|
|
||||||
Name: proto.String(playerEx.Name),
|
|
||||||
Head: proto.Int32(playerEx.Head),
|
|
||||||
Sex: proto.Int32(playerEx.Sex),
|
|
||||||
Coin: proto.Int64(playerEx.Coin),
|
|
||||||
Pos: proto.Int(playerEx.Pos),
|
|
||||||
Flag: proto.Int(playerEx.GetFlag()),
|
|
||||||
City: proto.String(playerEx.City),
|
|
||||||
HeadOutLine: proto.Int32(playerEx.HeadOutLine),
|
|
||||||
VIP: proto.Int32(playerEx.VIP),
|
|
||||||
}
|
|
||||||
pack.Player = pd
|
|
||||||
}
|
|
||||||
|
|
||||||
//get data
|
|
||||||
Response, err := slots.SlotsMgrSington.Enter(playerEx.SlotsSession, int64(s.GameId))
|
|
||||||
if err == nil {
|
|
||||||
data := assemble.DataToCli(Response).(assemble.TableInfo)
|
|
||||||
pi, _ := json.Marshal(data)
|
|
||||||
pack.PlayerInfo = string(pi)
|
|
||||||
if sceneEx.BetConfig == nil {
|
|
||||||
sceneEx.BetConfig = &data.BetConfig
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.Logger.Error("slots enter err:", err)
|
|
||||||
}
|
|
||||||
proto.SetDefaults(pack)
|
|
||||||
return pack
|
|
||||||
}
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerOp, sceneId=", s.GetSceneId(), " player=", p.SnId, " opcode=", opcode, " params=", params)
|
|
||||||
if s.GetSceneState() != nil {
|
|
||||||
if s.GetSceneState().OnPlayerOp(s, p, opcode, params) {
|
|
||||||
p.SetLastOPTimer(time.Now())
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
logger.Logger.Trace("(this *ScenePolicyGatesOfOlympus) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " eventcode=", evtcode, " params=", params)
|
|
||||||
if s.GetSceneState() != nil {
|
|
||||||
s.GetSceneState().OnPlayerEvent(s, p, evtcode, params)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前状态能否换桌
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
|
|
||||||
if s == nil || p == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if s.GetSceneState() != nil {
|
|
||||||
return s.GetSceneState().CanChangeCoinScene(s, p)
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 状态基类
|
|
||||||
type SceneBaseStateGatesOfOlympus struct {
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) GetTimeout(s *base.Scene) int {
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
return int(time.Now().Sub(sceneEx.GetStateStartTime()) / time.Second)
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) CanChangeTo(s base.SceneState) bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前状态能否换桌
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) OnEnter(s *base.Scene) {
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
sceneEx.SetStateStartTime(time.Now())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) OnLeave(s *base.Scene) {}
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) OnTick(s *base.Scene) {
|
|
||||||
if time.Now().Sub(s.GameStartTime) > time.Second*3 {
|
|
||||||
if sceneEx, ok := s.ExtraData.(*GatesOfOlympusSceneData); ok {
|
|
||||||
for _, p := range sceneEx.players {
|
|
||||||
if p.IsOnLine() {
|
|
||||||
p.leaveTime = 0
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
p.leaveTime++
|
|
||||||
if p.leaveTime < 60*2 {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
//踢出玩家
|
|
||||||
sceneEx.PlayerLeave(p.Player, common.PlayerLeaveReason_LongTimeNoOp, true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
s.GameStartTime = time.Now()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
func (this *SceneBaseStateGatesOfOlympus) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
|
||||||
}
|
|
||||||
|
|
||||||
// ////////////////////////////////////////////////////////////
|
|
||||||
// 开始状态
|
|
||||||
// ////////////////////////////////////////////////////////////
|
|
||||||
type SceneStateStartGatesOfOlympus struct {
|
|
||||||
SceneBaseStateGatesOfOlympus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) GetState() int {
|
|
||||||
return gatesofolympus.GatesOfOlympusStateStart
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) CanChangeTo(s base.SceneState) bool {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 当前状态能否换桌
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) CanChangeCoinScene(s *base.Scene, p *base.Player) bool {
|
|
||||||
if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok {
|
|
||||||
if playerEx.isFree {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) GetTimeout(s *base.Scene) int {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) OnEnter(s *base.Scene) {
|
|
||||||
this.SceneBaseStateGatesOfOlympus.OnEnter(s)
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
sceneEx.SetGameNowTime(time.Now())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 状态离开时
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) OnLeave(s *base.Scene) {
|
|
||||||
this.SceneBaseStateGatesOfOlympus.OnLeave(s)
|
|
||||||
logger.Logger.Tracef("(this *SceneStateStartGatesOfOlympus) OnLeave, sceneid=%v", s.GetSceneId())
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家操作
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) OnPlayerOp(s *base.Scene, p *base.Player, opcode int, params []int64) bool {
|
|
||||||
logger.Logger.Tracef("(this *SceneStateStartGatesOfOlympus) OnPlayerOp, sceneid=%v params=%v", s.GetSceneId(), params)
|
|
||||||
if this.SceneBaseStateGatesOfOlympus.OnPlayerOp(s, p, opcode, params) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
if sceneEx, ok := s.GetExtraData().(*GatesOfOlympusSceneData); ok {
|
|
||||||
if playerEx, ok := p.GetExtraData().(*GatesOfOlympusPlayerData); ok {
|
|
||||||
switch opcode {
|
|
||||||
case gatesofolympus.GatesOfOlympusPlayerOpStart:
|
|
||||||
playerEx.Clear()
|
|
||||||
if len(params) < 4 {
|
|
||||||
pack := &protocol.SCGatesOfOlympusBilled{
|
|
||||||
OpRetCode: proto.Int32(1),
|
|
||||||
}
|
|
||||||
proto.SetDefaults(pack)
|
|
||||||
logger.Logger.Trace("SCGatesOfOlympusBilled", pack.String())
|
|
||||||
playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED), pack)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
playerEx.BetSizeIndex = params[0]
|
|
||||||
playerEx.BetLevelIndex = params[1]
|
|
||||||
playerEx.BetLineIndex = params[2]
|
|
||||||
playerEx.BetMode = params[3]
|
|
||||||
needCoin := sceneEx.BetConfig.BetSize[params[0]] * float64(sceneEx.BetConfig.BetLevel[params[1]]) *
|
|
||||||
float64(sceneEx.BetConfig.BetLines[params[2]]) * float64(sceneEx.BetConfig.BaseBet[params[2]])
|
|
||||||
if needCoin > float64(playerEx.Coin) && !playerEx.isFree {
|
|
||||||
pack := &protocol.SCGatesOfOlympusBilled{
|
|
||||||
OpRetCode: proto.Int32(1),
|
|
||||||
}
|
|
||||||
proto.SetDefaults(pack)
|
|
||||||
logger.Logger.Trace("SCGatesOfOlympusBilled:", pack.String())
|
|
||||||
playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED), pack)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
//playerEx.SlotsSession.SetCoin(playerEx.Coin * gatesofolympus.NowByte)
|
|
||||||
//logger.Logger.Trace("=============init dif coin", playerEx.Coin-playerEx.SlotsSession.Coin()/gatesofolympus.NowByte)
|
|
||||||
|
|
||||||
//get data
|
|
||||||
Response, err := slots.SlotsMgrSington.Play(playerEx.SlotsSession, &base.SpinReq{
|
|
||||||
GameId: int64(sceneEx.GameId),
|
|
||||||
BetSizeIndex: playerEx.BetSizeIndex,
|
|
||||||
BetLevelIndex: playerEx.BetLevelIndex,
|
|
||||||
BetLineIndex: playerEx.BetLineIndex,
|
|
||||||
BetMode: playerEx.BetMode,
|
|
||||||
Ts: time.Now().Unix(),
|
|
||||||
})
|
|
||||||
var gameEndStr string
|
|
||||||
var data assemble.GameEnd
|
|
||||||
if err == nil {
|
|
||||||
s.SetGameNowTime(time.Now())
|
|
||||||
data = assemble.DataToCli(Response).(assemble.GameEnd)
|
|
||||||
|
|
||||||
data.BetSizeIndex = playerEx.BetSizeIndex
|
|
||||||
data.BetLevelIndex = playerEx.BetLevelIndex
|
|
||||||
data.LinesIndex = playerEx.BetLineIndex
|
|
||||||
//data.BaseBetIndex = 1
|
|
||||||
|
|
||||||
data.Results[0].BetMode = playerEx.BetMode
|
|
||||||
if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 {
|
|
||||||
//logger.Logger.Trace("=====================AddCoin=====TotalBet===", -data.TotalBet)
|
|
||||||
//第一次触发或者正常模式
|
|
||||||
playerEx.AddCoin(int64(-data.TotalBet), common.GainWay_HundredSceneLost, base.SyncFlag_ToClient, "system", s.GetSceneName())
|
|
||||||
playerEx.totalBet = int64(data.TotalBet)
|
|
||||||
}
|
|
||||||
var taxCoin float64
|
|
||||||
if data.RoundReward > 0 {
|
|
||||||
//税收比例
|
|
||||||
taxRate := sceneEx.GetDBGameFree().GetTaxRate()
|
|
||||||
if taxRate < 0 || taxRate > 10000 {
|
|
||||||
taxRate = 500
|
|
||||||
}
|
|
||||||
taxCoin = data.RoundReward * float64(taxRate) / 10000
|
|
||||||
data.RoundReward = data.RoundReward - taxCoin
|
|
||||||
playerEx.AddServiceFee(int64(taxCoin))
|
|
||||||
playerEx.taxCoin = int64(taxCoin)
|
|
||||||
playerEx.winCoin = int64(data.RoundReward)
|
|
||||||
}
|
|
||||||
pi, _ := json.Marshal(data)
|
|
||||||
gameEndStr = string(pi)
|
|
||||||
|
|
||||||
if data.Results[0].FreeStatus == 3 || data.Results[0].FreeNumMax == 0 {
|
|
||||||
//logger.Logger.Trace("=====================AddCoin=====RoundReward===", data.RoundReward)
|
|
||||||
playerEx.AddCoin(int64(data.RoundReward), common.GainWay_HundredSceneWin, 0, "system", s.GetSceneName())
|
|
||||||
//免费游戏结束或者正常模式
|
|
||||||
sceneEx.StaticsLaba(&base.StaticLabaParam{
|
|
||||||
SnId: playerEx.SnId,
|
|
||||||
Gain: int64(data.RoundReward - data.TotalBet),
|
|
||||||
GainTax: int64(taxCoin),
|
|
||||||
IsAddTimes: true,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
if data.Results[0].FreeNum > 0 {
|
|
||||||
playerEx.isFree = true
|
|
||||||
} else {
|
|
||||||
playerEx.isFree = false
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.Logger.Error("slots Play err:", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
playerEx.SlotsSession.SetCoin(int64(data.FinalCoin) * gatesofolympus.NowByte)
|
|
||||||
//logger.Logger.Trace("=====================end===== playerEx.Coin===", playerEx.Coin)
|
|
||||||
//logger.Logger.Trace("=====================end===== data.FinalCoin===", data.FinalCoin)
|
|
||||||
|
|
||||||
pack := &protocol.SCGatesOfOlympusBilled{
|
|
||||||
OpRetCode: proto.Int32(0),
|
|
||||||
GameEndStr: proto.String(gameEndStr),
|
|
||||||
}
|
|
||||||
proto.SetDefaults(pack)
|
|
||||||
logger.Logger.Trace("SCGatesOfOlympusBilled", pack.String())
|
|
||||||
playerEx.SendToClient(int(protocol.GatesOfOlympusPID_PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED), pack)
|
|
||||||
|
|
||||||
if playerEx.Coin != int64(data.FinalCoin) {
|
|
||||||
logger.Logger.Error("==========playerEx.Coin != Response.Coin==============", playerEx.Coin, data.FinalCoin)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 记录本次操作
|
|
||||||
GatesOfOlympusAndSaveLog(sceneEx, playerEx, data)
|
|
||||||
case 1000:
|
|
||||||
playerEx.Save(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
|
|
||||||
// 玩家事件
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) OnPlayerEvent(s *base.Scene, p *base.Player, evtcode int, params []int64) {
|
|
||||||
logger.Logger.Trace("(this *SceneStateStartGatesOfOlympus) OnPlayerEvent, sceneId=", s.GetSceneId(), " player=", p.SnId, " evtcode=", evtcode)
|
|
||||||
this.SceneBaseStateGatesOfOlympus.OnPlayerEvent(s, p, evtcode, params)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *SceneStateStartGatesOfOlympus) OnTick(s *base.Scene) {
|
|
||||||
this.SceneBaseStateGatesOfOlympus.OnTick(s)
|
|
||||||
}
|
|
||||||
|
|
||||||
// //////////////////////////////////////////////////////////////////////////////
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) RegisteSceneState(state base.SceneState) {
|
|
||||||
if state == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
stateid := state.GetState()
|
|
||||||
if stateid < 0 || stateid >= gatesofolympus.GatesOfOlympusStateMax {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
this.states[stateid] = state
|
|
||||||
}
|
|
||||||
|
|
||||||
func (this *ScenePolicyGatesOfOlympus) GetSceneState(s *base.Scene, stateid int) base.SceneState {
|
|
||||||
if stateid >= 0 && stateid < gatesofolympus.GatesOfOlympusStateMax {
|
|
||||||
return this.states[stateid]
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func GatesOfOlympusAndSaveLog(sceneEx *GatesOfOlympusSceneData, playerEx *GatesOfOlympusPlayerData, data assemble.GameEnd) {
|
|
||||||
if !playerEx.IsRob {
|
|
||||||
data.SnId = playerEx.SnId
|
|
||||||
if data.Results[0].FreeStatus != 1 && data.Results[0].FreeNumMax != 0 {
|
|
||||||
data.TotalBet = 0
|
|
||||||
}
|
|
||||||
info, err := model.MarshalGameNoteByROLL(data)
|
|
||||||
if err == nil {
|
|
||||||
logid, _ := model.AutoIncGameLogId()
|
|
||||||
playerEx.currentLogId = logid
|
|
||||||
var totalin, totalout int64
|
|
||||||
if data.Results[0].FreeStatus == 1 || data.Results[0].FreeNumMax == 0 {
|
|
||||||
totalin = playerEx.totalBet
|
|
||||||
}
|
|
||||||
if data.Results[0].FreeStatus == 3 || data.Results[0].FreeNumMax == 0 {
|
|
||||||
totalout = int64(data.RoundReward) + playerEx.taxCoin
|
|
||||||
}
|
|
||||||
playerEx.Cache(sceneEx.Scene, &base.SaveGameDetailedParam{
|
|
||||||
LogId: logid,
|
|
||||||
Detail: info,
|
|
||||||
}, &base.SaveGamePlayerListLogParam{
|
|
||||||
LogId: logid,
|
|
||||||
Platform: playerEx.Platform,
|
|
||||||
Snid: playerEx.SnId,
|
|
||||||
PlayerName: playerEx.Name,
|
|
||||||
TotalIn: totalin,
|
|
||||||
TotalOut: totalout,
|
|
||||||
TaxCoin: playerEx.taxCoin,
|
|
||||||
BetAmount: totalin,
|
|
||||||
WinAmountNoAnyTax: totalout - totalin - playerEx.taxCoin,
|
|
||||||
IsFirstGame: sceneEx.IsPlayerFirst(playerEx.Player),
|
|
||||||
IsFree: playerEx.isFree,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//统计输下注金币数
|
|
||||||
if !sceneEx.Testing && !playerEx.IsRob {
|
|
||||||
playerBet := &server.PlayerData{
|
|
||||||
SnId: proto.Int32(playerEx.SnId),
|
|
||||||
Bet: proto.Int64(playerEx.CurrentBet),
|
|
||||||
Gain: proto.Int64(int64(data.RoundReward) + playerEx.taxCoin),
|
|
||||||
Tax: proto.Int64(playerEx.taxCoin),
|
|
||||||
Coin: proto.Int64(playerEx.GetCoin()),
|
|
||||||
GameCoinTs: proto.Int64(playerEx.GameCoinTs),
|
|
||||||
}
|
|
||||||
gwPlayerBet := &server.GWPlayerData{
|
|
||||||
SceneId: sceneEx.SceneId,
|
|
||||||
GameFreeId: proto.Int32(sceneEx.GetDBGameFree().GetId()),
|
|
||||||
}
|
|
||||||
gwPlayerBet.Datas = append(gwPlayerBet.Datas, playerBet)
|
|
||||||
sceneEx.SyncPlayerDatas(&base.PlayerDataParam{
|
|
||||||
HasRobotGaming: false,
|
|
||||||
Data: gwPlayerBet,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
playerEx.taxCoin = 0
|
|
||||||
playerEx.winCoin = 0
|
|
||||||
|
|
||||||
if sceneEx.CheckNeedDestroy() && data.Results[0].FreeNum <= 0 {
|
|
||||||
sceneEx.SceneDestroy(true)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func init() {
|
|
||||||
//主状态
|
|
||||||
ScenePolicyGatesOfOlympusSington.RegisteSceneState(&SceneStateStartGatesOfOlympus{})
|
|
||||||
core.RegisteHook(core.HOOK_BEFORE_START, func() error {
|
|
||||||
base.RegisteScenePolicy(common.GameId_GatesOfOlympus, gatesofolympus.RoomMode_Classic, ScenePolicyGatesOfOlympusSington)
|
|
||||||
return nil
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
@ -36,7 +36,6 @@ import (
|
||||||
_ "mongo.games.com/game/gamesrv/fortunerabbit"
|
_ "mongo.games.com/game/gamesrv/fortunerabbit"
|
||||||
_ "mongo.games.com/game/gamesrv/fortunetiger"
|
_ "mongo.games.com/game/gamesrv/fortunetiger"
|
||||||
_ "mongo.games.com/game/gamesrv/fruits"
|
_ "mongo.games.com/game/gamesrv/fruits"
|
||||||
_ "mongo.games.com/game/gamesrv/gatesofolympus"
|
|
||||||
_ "mongo.games.com/game/gamesrv/iceage"
|
_ "mongo.games.com/game/gamesrv/iceage"
|
||||||
_ "mongo.games.com/game/gamesrv/richblessed"
|
_ "mongo.games.com/game/gamesrv/richblessed"
|
||||||
_ "mongo.games.com/game/gamesrv/slotspkg/slots"
|
_ "mongo.games.com/game/gamesrv/slotspkg/slots"
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,6 @@ type CustomFortune struct {
|
||||||
FreeNumMax int64 `json:"fnm"` //总次数
|
FreeNumMax int64 `json:"fnm"` //总次数
|
||||||
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
||||||
ForceRound int64 `json:"fr"` //第n次
|
ForceRound int64 `json:"fr"` //第n次
|
||||||
ScatterWin int64 `json:"sw,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func getDataByTheme(NodeTree *shared.LiteNodeTree) (map[int64]*shared.SpinLock, CustomFortune, int64) {
|
func getDataByTheme(NodeTree *shared.LiteNodeTree) (map[int64]*shared.SpinLock, CustomFortune, int64) {
|
||||||
|
|
|
||||||
|
|
@ -1,21 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# 检查 "external" 目录是否存在,如果存在,则进入目录
|
|
||||||
if [ -d "external" ]; then
|
|
||||||
cd external
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 检查 converter 文件是否存在
|
|
||||||
if [ ! -f "converter" ]; then
|
|
||||||
echo "Building converter..."
|
|
||||||
go build -o converter ../tools/converter
|
|
||||||
else
|
|
||||||
echo "converter already exists."
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 执行 converter 文件
|
|
||||||
./converter go /excel ../internal/exported/excel2go ..
|
|
||||||
|
|
||||||
echo "Done."
|
|
||||||
read -p "Press [Enter] to exit..."
|
|
||||||
exit 0
|
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
|
@ -120,46 +120,6 @@ var (
|
||||||
FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{}
|
FortuneTigerSuperStackWeight = []*structs.FortuneTigerSuperStackWeight{}
|
||||||
FortuneTigerSymbolBetRatio = []*structs.FortuneTigerSymbolBetRatio{}
|
FortuneTigerSymbolBetRatio = []*structs.FortuneTigerSymbolBetRatio{}
|
||||||
FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{}
|
FortuneTigerSymbol = map[int64]*structs.FortuneTigerSymbol{}
|
||||||
GatesOfOlympusBetBetChangeList = map[int64]*structs.GatesOfOlympusBetBetChangeList{}
|
|
||||||
GatesOfOlympusBetBetLevel = map[int64]*structs.GatesOfOlympusBetBetLevel{}
|
|
||||||
GatesOfOlympusBetBetLine = map[int64]*structs.GatesOfOlympusBetBetLine{}
|
|
||||||
GatesOfOlympusBetBetSize = map[int64]*structs.GatesOfOlympusBetBetSize{}
|
|
||||||
GatesOfOlympusBetFirstBet = map[int64]*structs.GatesOfOlympusBetFirstBet{}
|
|
||||||
GatesOfOlympusFormation = []*structs.GatesOfOlympusFormation{}
|
|
||||||
GatesOfOlympusMapRTPMode = map[int64]*structs.GatesOfOlympusMapRTPMode{}
|
|
||||||
GatesOfOlympusMultiplier = []*structs.GatesOfOlympusMultiplier{}
|
|
||||||
GatesOfOlympusMultiplierKeyID = map[int64]*structs.GatesOfOlympusMultiplierKeyID{}
|
|
||||||
GatesOfOlympusReelBaseSpin1Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin1Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin1Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelBaseSpin2Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin2Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin2Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelBaseSpin3Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin3Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin3Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelBaseSpin7Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin7Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin7Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelBaseSpin8Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin8Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpin8Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelBaseSpinRange = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpinReel = [][]int64{}
|
|
||||||
GatesOfOlympusReelBaseSpinWeight = [][]float64{}
|
|
||||||
GatesOfOlympusReelChoose = []*structs.GatesOfOlympusReelChoose{}
|
|
||||||
GatesOfOlympusReelFreeSpin4Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelFreeSpin4Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelFreeSpin4Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelFreeSpin5Range = [][]int64{}
|
|
||||||
GatesOfOlympusReelFreeSpin5Reel = [][]int64{}
|
|
||||||
GatesOfOlympusReelFreeSpin5Weight = [][]float64{}
|
|
||||||
GatesOfOlympusReelFreeSpinRange = [][]int64{}
|
|
||||||
GatesOfOlympusReelFreeSpinReel = [][]int64{}
|
|
||||||
GatesOfOlympusReelFreeSpinWeight = [][]float64{}
|
|
||||||
GatesOfOlympusScatter = map[int64]*structs.GatesOfOlympusScatter{}
|
|
||||||
GatesOfOlympusSymbolBetRatio = []*structs.GatesOfOlympusSymbolBetRatio{}
|
|
||||||
GatesOfOlympusSymbol = map[int64]*structs.GatesOfOlympusSymbol{}
|
|
||||||
MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{}
|
MatrixFeaturesForm15X1TypeA = []*structs.MatrixFeaturesForm15X1TypeA{}
|
||||||
MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{}
|
MatrixFeaturesForm19X1TypeA = []*structs.MatrixFeaturesForm19X1TypeA{}
|
||||||
MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{}
|
MatrixFeaturesForm20X1TypeA = []*structs.MatrixFeaturesForm20X1TypeA{}
|
||||||
|
|
|
||||||
|
|
@ -179,46 +179,6 @@ func StoragesLoading(data map[string]string) {
|
||||||
Load(data, "Base.FortuneTiger/SuperStack.Weight", &base.FortuneTigerSuperStackWeight)
|
Load(data, "Base.FortuneTiger/SuperStack.Weight", &base.FortuneTigerSuperStackWeight)
|
||||||
Load(data, "Base.FortuneTiger/Symbol.BetRatio", &base.FortuneTigerSymbolBetRatio)
|
Load(data, "Base.FortuneTiger/Symbol.BetRatio", &base.FortuneTigerSymbolBetRatio)
|
||||||
Load(data, "Base.FortuneTiger/Symbol.Default", &base.FortuneTigerSymbol)
|
Load(data, "Base.FortuneTiger/Symbol.Default", &base.FortuneTigerSymbol)
|
||||||
Load(data, "Base.GatesOfOlympus/Bet.BetChangeList", &base.GatesOfOlympusBetBetChangeList)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Bet.BetLevel", &base.GatesOfOlympusBetBetLevel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Bet.BetLine", &base.GatesOfOlympusBetBetLine)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Bet.BetSize", &base.GatesOfOlympusBetBetSize)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Bet.FirstBet", &base.GatesOfOlympusBetFirstBet)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Formation.Default", &base.GatesOfOlympusFormation)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Map.RTPMode", &base.GatesOfOlympusMapRTPMode)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Multiplier.Default", &base.GatesOfOlympusMultiplier)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Multiplier.Default/ID", &base.GatesOfOlympusMultiplierKeyID)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin1.Range", &base.GatesOfOlympusReelBaseSpin1Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin1.Reel", &base.GatesOfOlympusReelBaseSpin1Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin1.Weight", &base.GatesOfOlympusReelBaseSpin1Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin2.Range", &base.GatesOfOlympusReelBaseSpin2Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin2.Reel", &base.GatesOfOlympusReelBaseSpin2Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin2.Weight", &base.GatesOfOlympusReelBaseSpin2Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin3.Range", &base.GatesOfOlympusReelBaseSpin3Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin3.Reel", &base.GatesOfOlympusReelBaseSpin3Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin3.Weight", &base.GatesOfOlympusReelBaseSpin3Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin7.Range", &base.GatesOfOlympusReelBaseSpin7Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin7.Reel", &base.GatesOfOlympusReelBaseSpin7Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin7.Weight", &base.GatesOfOlympusReelBaseSpin7Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin8.Range", &base.GatesOfOlympusReelBaseSpin8Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin8.Reel", &base.GatesOfOlympusReelBaseSpin8Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin8.Weight", &base.GatesOfOlympusReelBaseSpin8Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin.Range", &base.GatesOfOlympusReelBaseSpinRange)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin.Reel", &base.GatesOfOlympusReelBaseSpinReel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelBaseSpin.Weight", &base.GatesOfOlympusReelBaseSpinWeight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelChoose.Default", &base.GatesOfOlympusReelChoose)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin4.Range", &base.GatesOfOlympusReelFreeSpin4Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin4.Reel", &base.GatesOfOlympusReelFreeSpin4Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin4.Weight", &base.GatesOfOlympusReelFreeSpin4Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin5.Range", &base.GatesOfOlympusReelFreeSpin5Range)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin5.Reel", &base.GatesOfOlympusReelFreeSpin5Reel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin5.Weight", &base.GatesOfOlympusReelFreeSpin5Weight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin.Range", &base.GatesOfOlympusReelFreeSpinRange)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin.Reel", &base.GatesOfOlympusReelFreeSpinReel)
|
|
||||||
Load(data, "Base.GatesOfOlympus/ReelFreeSpin.Weight", &base.GatesOfOlympusReelFreeSpinWeight)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Scatter.Default", &base.GatesOfOlympusScatter)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Symbol.BetRatio", &base.GatesOfOlympusSymbolBetRatio)
|
|
||||||
Load(data, "Base.GatesOfOlympus/Symbol.Default", &base.GatesOfOlympusSymbol)
|
|
||||||
Load(data, "Base.Matrix/FeaturesForm15X1TypeA.Default", &base.MatrixFeaturesForm15X1TypeA)
|
Load(data, "Base.Matrix/FeaturesForm15X1TypeA.Default", &base.MatrixFeaturesForm15X1TypeA)
|
||||||
Load(data, "Base.Matrix/FeaturesForm19X1TypeA.Default", &base.MatrixFeaturesForm19X1TypeA)
|
Load(data, "Base.Matrix/FeaturesForm19X1TypeA.Default", &base.MatrixFeaturesForm19X1TypeA)
|
||||||
Load(data, "Base.Matrix/FeaturesForm20X1TypeA.Default", &base.MatrixFeaturesForm20X1TypeA)
|
Load(data, "Base.Matrix/FeaturesForm20X1TypeA.Default", &base.MatrixFeaturesForm20X1TypeA)
|
||||||
|
|
@ -441,46 +401,6 @@ func StoragesMapping() {
|
||||||
Set("Base", "FortuneTiger/SuperStack", "Weight", base.FortuneTigerSuperStackWeight)
|
Set("Base", "FortuneTiger/SuperStack", "Weight", base.FortuneTigerSuperStackWeight)
|
||||||
Set("Base", "FortuneTiger/Symbol", "BetRatio", base.FortuneTigerSymbolBetRatio)
|
Set("Base", "FortuneTiger/Symbol", "BetRatio", base.FortuneTigerSymbolBetRatio)
|
||||||
Set("Base", "FortuneTiger/Symbol", "Default", base.FortuneTigerSymbol)
|
Set("Base", "FortuneTiger/Symbol", "Default", base.FortuneTigerSymbol)
|
||||||
Set("Base", "GatesOfOlympus/Bet", "BetChangeList", base.GatesOfOlympusBetBetChangeList)
|
|
||||||
Set("Base", "GatesOfOlympus/Bet", "BetLevel", base.GatesOfOlympusBetBetLevel)
|
|
||||||
Set("Base", "GatesOfOlympus/Bet", "BetLine", base.GatesOfOlympusBetBetLine)
|
|
||||||
Set("Base", "GatesOfOlympus/Bet", "BetSize", base.GatesOfOlympusBetBetSize)
|
|
||||||
Set("Base", "GatesOfOlympus/Bet", "FirstBet", base.GatesOfOlympusBetFirstBet)
|
|
||||||
Set("Base", "GatesOfOlympus/Formation", "Default", base.GatesOfOlympusFormation)
|
|
||||||
Set("Base", "GatesOfOlympus/Map", "RTPMode", base.GatesOfOlympusMapRTPMode)
|
|
||||||
Set("Base", "GatesOfOlympus/Multiplier", "Default", base.GatesOfOlympusMultiplier)
|
|
||||||
Set("Base", "GatesOfOlympus/Multiplier", "Default/ID", base.GatesOfOlympusMultiplierKeyID)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin1", "Range", base.GatesOfOlympusReelBaseSpin1Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin1", "Reel", base.GatesOfOlympusReelBaseSpin1Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin1", "Weight", base.GatesOfOlympusReelBaseSpin1Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin2", "Range", base.GatesOfOlympusReelBaseSpin2Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin2", "Reel", base.GatesOfOlympusReelBaseSpin2Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin2", "Weight", base.GatesOfOlympusReelBaseSpin2Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin3", "Range", base.GatesOfOlympusReelBaseSpin3Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin3", "Reel", base.GatesOfOlympusReelBaseSpin3Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin3", "Weight", base.GatesOfOlympusReelBaseSpin3Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin7", "Range", base.GatesOfOlympusReelBaseSpin7Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin7", "Reel", base.GatesOfOlympusReelBaseSpin7Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin7", "Weight", base.GatesOfOlympusReelBaseSpin7Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin8", "Range", base.GatesOfOlympusReelBaseSpin8Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin8", "Reel", base.GatesOfOlympusReelBaseSpin8Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin8", "Weight", base.GatesOfOlympusReelBaseSpin8Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin", "Range", base.GatesOfOlympusReelBaseSpinRange)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin", "Reel", base.GatesOfOlympusReelBaseSpinReel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelBaseSpin", "Weight", base.GatesOfOlympusReelBaseSpinWeight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelChoose", "Default", base.GatesOfOlympusReelChoose)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin4", "Range", base.GatesOfOlympusReelFreeSpin4Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin4", "Reel", base.GatesOfOlympusReelFreeSpin4Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin4", "Weight", base.GatesOfOlympusReelFreeSpin4Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin5", "Range", base.GatesOfOlympusReelFreeSpin5Range)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin5", "Reel", base.GatesOfOlympusReelFreeSpin5Reel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin5", "Weight", base.GatesOfOlympusReelFreeSpin5Weight)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin", "Range", base.GatesOfOlympusReelFreeSpinRange)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin", "Reel", base.GatesOfOlympusReelFreeSpinReel)
|
|
||||||
Set("Base", "GatesOfOlympus/ReelFreeSpin", "Weight", base.GatesOfOlympusReelFreeSpinWeight)
|
|
||||||
Set("Base", "GatesOfOlympus/Scatter", "Default", base.GatesOfOlympusScatter)
|
|
||||||
Set("Base", "GatesOfOlympus/Symbol", "BetRatio", base.GatesOfOlympusSymbolBetRatio)
|
|
||||||
Set("Base", "GatesOfOlympus/Symbol", "Default", base.GatesOfOlympusSymbol)
|
|
||||||
Set("Base", "Matrix/FeaturesForm15X1TypeA", "Default", base.MatrixFeaturesForm15X1TypeA)
|
Set("Base", "Matrix/FeaturesForm15X1TypeA", "Default", base.MatrixFeaturesForm15X1TypeA)
|
||||||
Set("Base", "Matrix/FeaturesForm19X1TypeA", "Default", base.MatrixFeaturesForm19X1TypeA)
|
Set("Base", "Matrix/FeaturesForm19X1TypeA", "Default", base.MatrixFeaturesForm19X1TypeA)
|
||||||
Set("Base", "Matrix/FeaturesForm20X1TypeA", "Default", base.MatrixFeaturesForm20X1TypeA)
|
Set("Base", "Matrix/FeaturesForm20X1TypeA", "Default", base.MatrixFeaturesForm20X1TypeA)
|
||||||
|
|
@ -620,12 +540,6 @@ func LinksMapping() {
|
||||||
Link("FortuneTiger/ReelBaseSpin", "Weight/1", "FortuneTiger/ReelBaseSpin", "Weight")
|
Link("FortuneTiger/ReelBaseSpin", "Weight/1", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||||
Link("FortuneTiger/ReelBaseSpin", "Weight/2", "FortuneTiger/ReelBaseSpin", "Weight")
|
Link("FortuneTiger/ReelBaseSpin", "Weight/2", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||||
Link("FortuneTiger/ReelBaseSpin", "Weight/3", "FortuneTiger/ReelBaseSpin", "Weight")
|
Link("FortuneTiger/ReelBaseSpin", "Weight/3", "FortuneTiger/ReelBaseSpin", "Weight")
|
||||||
Link("GatesOfOlympus/MatrixSameForm5X6TypeA", "Default", "Matrix/SameForm5X6TypeA", "Default")
|
|
||||||
Link("GatesOfOlympus/MatrixSameForm5X6TypeB", "Default", "Matrix/SameForm5X6TypeB", "Default")
|
|
||||||
Link("GatesOfOlympus/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
|
||||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/1", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
|
||||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/2", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
|
||||||
Link("GatesOfOlympus/ReelBaseSpin1", "Weight/3", "GatesOfOlympus/ReelBaseSpin1", "Weight")
|
|
||||||
Link("Test/MatrixLine1Form3X3TypeA", "Default", "Matrix/Line1Form3X3TypeA", "Default")
|
Link("Test/MatrixLine1Form3X3TypeA", "Default", "Matrix/Line1Form3X3TypeA", "Default")
|
||||||
Link("Test/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
Link("Test/PrizeModel", "Default", "PrizeModel/PrizeModelTypeB", "Default")
|
||||||
Link("Test/ReelBaseSpin", "Weight/1", "Test/ReelBaseSpin", "Weight")
|
Link("Test/ReelBaseSpin", "Weight/1", "Test/ReelBaseSpin", "Weight")
|
||||||
|
|
@ -722,4 +636,3 @@ func Load(dataMap map[string]string, name string, v interface{}) {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -172,19 +172,6 @@ type (
|
||||||
FreeSpinCount int64
|
FreeSpinCount int64
|
||||||
MaxWin int64
|
MaxWin int64
|
||||||
}
|
}
|
||||||
// GatesOfOlympusMultiplier comment
|
|
||||||
GatesOfOlympusMultiplier struct {
|
|
||||||
Multiple int64
|
|
||||||
ID int64
|
|
||||||
Weights []int64
|
|
||||||
}
|
|
||||||
// GatesOfOlympusReelChoose comment
|
|
||||||
GatesOfOlympusReelChoose struct {
|
|
||||||
ID int64
|
|
||||||
IsFreeSpin bool
|
|
||||||
NodeType string
|
|
||||||
Weights []int64
|
|
||||||
}
|
|
||||||
// JackpotPrize comment
|
// JackpotPrize comment
|
||||||
JackpotPrize struct {
|
JackpotPrize struct {
|
||||||
PrizeType int64
|
PrizeType int64
|
||||||
|
|
@ -534,42 +521,6 @@ type (
|
||||||
// FortuneTigerSymbolBetRatio comment
|
// FortuneTigerSymbolBetRatio comment
|
||||||
FortuneTigerSymbolBetRatio = SymbolBetRatio
|
FortuneTigerSymbolBetRatio = SymbolBetRatio
|
||||||
|
|
||||||
// GatesOfOlympusBetBetChangeList comment
|
|
||||||
GatesOfOlympusBetBetChangeList = BetChangeList
|
|
||||||
|
|
||||||
// GatesOfOlympusBetBetLevel comment
|
|
||||||
GatesOfOlympusBetBetLevel = BetLevel
|
|
||||||
|
|
||||||
// GatesOfOlympusBetBetLine comment
|
|
||||||
GatesOfOlympusBetBetLine = BetLine
|
|
||||||
|
|
||||||
// GatesOfOlympusBetBetSize comment
|
|
||||||
GatesOfOlympusBetBetSize = BetSize
|
|
||||||
|
|
||||||
// GatesOfOlympusBetFirstBet comment
|
|
||||||
GatesOfOlympusBetFirstBet = FirstBet
|
|
||||||
|
|
||||||
// GatesOfOlympusFormation comment
|
|
||||||
GatesOfOlympusFormation = Formation
|
|
||||||
|
|
||||||
// GatesOfOlympusMapRTPMode comment
|
|
||||||
GatesOfOlympusMapRTPMode = MapRTPMode
|
|
||||||
|
|
||||||
// GatesOfOlympusMapRTPModeTypeWeight comment
|
|
||||||
GatesOfOlympusMapRTPModeTypeWeight = MapRTPModeTypeWeight
|
|
||||||
|
|
||||||
// GatesOfOlympusMultiplierKeyID comment
|
|
||||||
GatesOfOlympusMultiplierKeyID = GatesOfOlympusMultiplier
|
|
||||||
|
|
||||||
// GatesOfOlympusScatter comment
|
|
||||||
GatesOfOlympusScatter = Scatter
|
|
||||||
|
|
||||||
// GatesOfOlympusSymbol comment
|
|
||||||
GatesOfOlympusSymbol = Symbol
|
|
||||||
|
|
||||||
// GatesOfOlympusSymbolBetRatio comment
|
|
||||||
GatesOfOlympusSymbolBetRatio = SymbolBetRatio
|
|
||||||
|
|
||||||
// MatrixFeaturesForm15X1TypeA comment
|
// MatrixFeaturesForm15X1TypeA comment
|
||||||
MatrixFeaturesForm15X1TypeA = Matrix
|
MatrixFeaturesForm15X1TypeA = Matrix
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ const (
|
||||||
FortuneOx = "FortuneOx"
|
FortuneOx = "FortuneOx"
|
||||||
FortuneMouse = "FortuneMouse"
|
FortuneMouse = "FortuneMouse"
|
||||||
CashMania = "CashMania"
|
CashMania = "CashMania"
|
||||||
GatesOfOlympus = "GatesOfOlympus"
|
|
||||||
Test = "Test"
|
Test = "Test"
|
||||||
)
|
)
|
||||||
const (
|
const (
|
||||||
|
|
@ -18,7 +17,6 @@ const (
|
||||||
GameId_OX
|
GameId_OX
|
||||||
GameId_Mouse
|
GameId_Mouse
|
||||||
GameId_Cash_Mania
|
GameId_Cash_Mania
|
||||||
GameId_GatesOfOlympus
|
|
||||||
|
|
||||||
GameId_Max
|
GameId_Max
|
||||||
GameId_Test = 999
|
GameId_Test = 999
|
||||||
|
|
@ -31,7 +29,6 @@ var GameMap = map[uint]string{
|
||||||
GameId_OX: FortuneOx,
|
GameId_OX: FortuneOx,
|
||||||
GameId_Mouse: FortuneMouse,
|
GameId_Mouse: FortuneMouse,
|
||||||
GameId_Cash_Mania: CashMania,
|
GameId_Cash_Mania: CashMania,
|
||||||
GameId_GatesOfOlympus: GatesOfOlympus,
|
|
||||||
GameId_Test: Test,
|
GameId_Test: Test,
|
||||||
}
|
}
|
||||||
var GameMapTheme = map[string]uint{
|
var GameMapTheme = map[string]uint{
|
||||||
|
|
@ -41,7 +38,6 @@ var GameMapTheme = map[string]uint{
|
||||||
FortuneOx: GameId_OX,
|
FortuneOx: GameId_OX,
|
||||||
FortuneMouse: GameId_Mouse,
|
FortuneMouse: GameId_Mouse,
|
||||||
CashMania: GameId_Cash_Mania,
|
CashMania: GameId_Cash_Mania,
|
||||||
GatesOfOlympus: GameId_GatesOfOlympus,
|
|
||||||
Test: GameId_Test,
|
Test: GameId_Test,
|
||||||
}
|
}
|
||||||
var GameKeyMap = map[int64]uint{
|
var GameKeyMap = map[int64]uint{
|
||||||
|
|
@ -51,7 +47,5 @@ var GameKeyMap = map[int64]uint{
|
||||||
310: GameId_Rabbit,
|
310: GameId_Rabbit,
|
||||||
311: GameId_OX,
|
311: GameId_OX,
|
||||||
312: GameId_Mouse,
|
312: GameId_Mouse,
|
||||||
313: GameId_Cash_Mania,
|
|
||||||
314: GameId_GatesOfOlympus,
|
|
||||||
999: GameId_Max,
|
999: GameId_Max,
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,18 +58,6 @@ type GameEndDto struct {
|
||||||
ActualWin int64 `json:"actualWin"`
|
ActualWin int64 `json:"actualWin"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CustomEliminate struct {
|
|
||||||
LinkPositions []*LinkPositions `json:"LinkPositions,omitempty"` //消除的位置
|
|
||||||
AppendSymbols [][]int64 `json:"AppendSymbols,omitempty"` //新增
|
|
||||||
FormattedSymbols [][]int64 `json:"FormattedSymbols,omitempty"` //最终的结果
|
|
||||||
LinePays []float64 `json:"LinePays,omitempty"` //赔付
|
|
||||||
WinCoins []float64 `json:"WinCoins,omitempty"` //输赢
|
|
||||||
MultiStr string `json:"multi_str,omitempty"`
|
|
||||||
MultiStrVal string `json:"multi_str_val,omitempty"`
|
|
||||||
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
|
|
||||||
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
// Special
|
// Special
|
||||||
type SpinLock struct {
|
type SpinLock struct {
|
||||||
//tigerSpecial
|
//tigerSpecial
|
||||||
|
|
@ -93,13 +81,4 @@ type SpinLock struct {
|
||||||
Multiple int64 `json:"multiple,omitempty"` //倍乘倍数
|
Multiple int64 `json:"multiple,omitempty"` //倍乘倍数
|
||||||
Irv [][]float64 `json:"irv,omitempty"`
|
Irv [][]float64 `json:"irv,omitempty"`
|
||||||
Frv [][]float64 `json:"frv,omitempty"`
|
Frv [][]float64 `json:"frv,omitempty"`
|
||||||
|
|
||||||
//GatesOfOlympus
|
|
||||||
CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"`
|
|
||||||
Pay float64 `json:"Pay,omitempty"`
|
|
||||||
Multi int64 `json:"Multi,omitempty"`
|
|
||||||
MultiStr string `json:"multi_str,omitempty"`
|
|
||||||
MultiStrVal string `json:"multi_str_val,omitempty"`
|
|
||||||
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
|
|
||||||
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -122,18 +122,6 @@ func (n *MachineDesc) BetChangeList() []float64 {
|
||||||
}
|
}
|
||||||
return lists
|
return lists
|
||||||
}
|
}
|
||||||
func (n *MachineDesc) GetBetIndexByVal(val float64) []int64 {
|
|
||||||
betChangeListRows, ok := n.Sheet("Bet", "BetChangeList").(map[int64]*structs.BetChangeList)
|
|
||||||
if !ok {
|
|
||||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "BetChangeList"))
|
|
||||||
}
|
|
||||||
for _, list := range betChangeListRows {
|
|
||||||
if list.BetChangeList == val {
|
|
||||||
return []int64{list.BetSizeIndex, list.BetLevelIndex}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
func (n *MachineDesc) GetVector(choice int64, minRatio, maxRatio float64, isForceWin bool) (int64, []int64) {
|
func (n *MachineDesc) GetVector(choice int64, minRatio, maxRatio float64, isForceWin bool) (int64, []int64) {
|
||||||
if vectorIndex := config.GetInt64("slots.vectorIndex"); vectorIndex > 0 {
|
if vectorIndex := config.GetInt64("slots.vectorIndex"); vectorIndex > 0 {
|
||||||
rows := n.DefaultSheet("Vector").([]*structs.Vector)
|
rows := n.DefaultSheet("Vector").([]*structs.Vector)
|
||||||
|
|
|
||||||
|
|
@ -13,8 +13,6 @@ type Formation struct {
|
||||||
NodeType string
|
NodeType string
|
||||||
FormationDesc *desc.FormationDesc
|
FormationDesc *desc.FormationDesc
|
||||||
Symbols []int64
|
Symbols []int64
|
||||||
SymbolsAbove []int64
|
|
||||||
SymbolsBelow []int64
|
|
||||||
RandPositions []int64
|
RandPositions []int64
|
||||||
CheatSymbols []int64
|
CheatSymbols []int64
|
||||||
DisplaySymbols []int64
|
DisplaySymbols []int64
|
||||||
|
|
@ -74,8 +72,6 @@ func NewFormation(n *desc.NodeDesc, seqID int64) (*Formation, error) {
|
||||||
NodeType: n.NodeType,
|
NodeType: n.NodeType,
|
||||||
FormationDesc: formationDesc,
|
FormationDesc: formationDesc,
|
||||||
Symbols: nil,
|
Symbols: nil,
|
||||||
SymbolsAbove: nil,
|
|
||||||
SymbolsBelow: nil,
|
|
||||||
RandPositions: nil,
|
RandPositions: nil,
|
||||||
CheatSymbols: nil,
|
CheatSymbols: nil,
|
||||||
DisplaySymbols: nil,
|
DisplaySymbols: nil,
|
||||||
|
|
@ -100,16 +96,12 @@ func (f *Formation) Rand(r *randx.Randx) {
|
||||||
symbol := reelDesc.Reel[symbolIdx%length]
|
symbol := reelDesc.Reel[symbolIdx%length]
|
||||||
f.Symbols = append(f.Symbols, symbol)
|
f.Symbols = append(f.Symbols, symbol)
|
||||||
}
|
}
|
||||||
f.SymbolsAbove = append(f.SymbolsAbove, reelDesc.Reel[(startIdx+reelDesc.Range-1)%length])
|
|
||||||
f.SymbolsBelow = append(f.SymbolsBelow, reelDesc.Reel[(startIdx+reelDesc.Range)%length])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *Formation) ResetRandSymbols(r *randx.Randx) {
|
func (f *Formation) ResetRandSymbols(r *randx.Randx) {
|
||||||
f.RandPositions = nil
|
f.RandPositions = nil
|
||||||
f.Symbols = nil
|
f.Symbols = nil
|
||||||
f.SymbolsAbove = nil
|
|
||||||
f.SymbolsBelow = nil
|
|
||||||
for _, reelDesc := range f.FormationDesc.ReelsDesc {
|
for _, reelDesc := range f.FormationDesc.ReelsDesc {
|
||||||
// 经测试:缓存权重 和 二分查找 对权重随机性能的提升微乎其微,没必要优化
|
// 经测试:缓存权重 和 二分查找 对权重随机性能的提升微乎其微,没必要优化
|
||||||
startIdx := int64(randx.RandWeight(r, reelDesc.Weights))
|
startIdx := int64(randx.RandWeight(r, reelDesc.Weights))
|
||||||
|
|
@ -119,15 +111,11 @@ func (f *Formation) ResetRandSymbols(r *randx.Randx) {
|
||||||
symbol := reelDesc.Reel[symbolIdx%length]
|
symbol := reelDesc.Reel[symbolIdx%length]
|
||||||
f.Symbols = append(f.Symbols, symbol)
|
f.Symbols = append(f.Symbols, symbol)
|
||||||
}
|
}
|
||||||
f.SymbolsAbove = append(f.SymbolsAbove, reelDesc.Reel[(startIdx-1)%length])
|
|
||||||
f.SymbolsBelow = append(f.SymbolsBelow, reelDesc.Reel[(startIdx+reelDesc.Range)%length])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func (f *Formation) ResetRandSymbolsByIndex(r *randx.Randx) {
|
func (f *Formation) ResetRandSymbolsByIndex(r *randx.Randx) {
|
||||||
f.RandPositions = nil
|
f.RandPositions = nil
|
||||||
f.Symbols = nil
|
f.Symbols = nil
|
||||||
f.SymbolsAbove = nil
|
|
||||||
f.SymbolsBelow = nil
|
|
||||||
for _, reelDesc := range f.FormationDesc.ReelsDesc {
|
for _, reelDesc := range f.FormationDesc.ReelsDesc {
|
||||||
// 经测试:缓存权重 和 二分查找 对权重随机性能的提升微乎其微,没必要优化
|
// 经测试:缓存权重 和 二分查找 对权重随机性能的提升微乎其微,没必要优化
|
||||||
startIdx := int64(r.Intn(len(reelDesc.Weights)))
|
startIdx := int64(r.Intn(len(reelDesc.Weights)))
|
||||||
|
|
@ -137,8 +125,6 @@ func (f *Formation) ResetRandSymbolsByIndex(r *randx.Randx) {
|
||||||
symbol := reelDesc.Reel[symbolIdx%length]
|
symbol := reelDesc.Reel[symbolIdx%length]
|
||||||
f.Symbols = append(f.Symbols, symbol)
|
f.Symbols = append(f.Symbols, symbol)
|
||||||
}
|
}
|
||||||
f.SymbolsAbove = append(f.SymbolsAbove, reelDesc.Reel[(startIdx-1)%length])
|
|
||||||
f.SymbolsBelow = append(f.SymbolsBelow, reelDesc.Reel[(startIdx+reelDesc.Range)%length])
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,8 +16,6 @@ type Formation interface {
|
||||||
SetInitFormattedSymbols(symbols [][]int64) Formation
|
SetInitFormattedSymbols(symbols [][]int64) Formation
|
||||||
|
|
||||||
GetSymbols() []int64
|
GetSymbols() []int64
|
||||||
GetSymbolsAbove() []int64
|
|
||||||
GetSymbolsBelow() []int64
|
|
||||||
SetSymbols(symbols []int64) Formation
|
SetSymbols(symbols []int64) Formation
|
||||||
GetReelFormattedSymbols() [][]int64
|
GetReelFormattedSymbols() [][]int64
|
||||||
GetMatrixFormattedSymbols() [][]int64
|
GetMatrixFormattedSymbols() [][]int64
|
||||||
|
|
@ -43,8 +41,6 @@ type Formation interface {
|
||||||
GetMatrixFormattedFinalSymbols() [][]int64
|
GetMatrixFormattedFinalSymbols() [][]int64
|
||||||
SetFormattedFinalSymbols(symbols [][]int64) Formation
|
SetFormattedFinalSymbols(symbols [][]int64) Formation
|
||||||
|
|
||||||
GetMatrixFormattedBySymbols(symbols []int64) [][]int64
|
|
||||||
|
|
||||||
GetLinkPositions() []*shared.LinkPositions
|
GetLinkPositions() []*shared.LinkPositions
|
||||||
SetLinkPositions(linkPositions []*shared.LinkPositions) Formation
|
SetLinkPositions(linkPositions []*shared.LinkPositions) Formation
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@ type Spinner interface {
|
||||||
BetLines() []int64
|
BetLines() []int64
|
||||||
BaseBets() []int64
|
BaseBets() []int64
|
||||||
BetChangeList() []float64
|
BetChangeList() []float64
|
||||||
GetBetIndexByVal(val float64) []int64
|
|
||||||
|
|
||||||
Choice() int64
|
Choice() int64
|
||||||
Stay() bool
|
Stay() bool
|
||||||
|
|
|
||||||
|
|
@ -65,20 +65,6 @@ func (f *Formation) GetSymbols() []int64 {
|
||||||
return symbols
|
return symbols
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSymbolsAbove gets origin SymbolsAbove
|
|
||||||
func (f *Formation) GetSymbolsAbove() []int64 {
|
|
||||||
symbolsAbove := make([]int64, len(f.OriginFormation.SymbolsAbove))
|
|
||||||
copy(symbolsAbove, f.OriginFormation.SymbolsAbove)
|
|
||||||
return symbolsAbove
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetSymbolsBelow gets origin SymbolsBelow
|
|
||||||
func (f *Formation) GetSymbolsBelow() []int64 {
|
|
||||||
symbolsBelow := make([]int64, len(f.OriginFormation.SymbolsBelow))
|
|
||||||
copy(symbolsBelow, f.OriginFormation.SymbolsBelow)
|
|
||||||
return symbolsBelow
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetSymbols sets origin symbols
|
// SetSymbols sets origin symbols
|
||||||
func (f *Formation) SetSymbols(symbols []int64) intf.Formation {
|
func (f *Formation) SetSymbols(symbols []int64) intf.Formation {
|
||||||
f.OriginFormation.Symbols = symbols
|
f.OriginFormation.Symbols = symbols
|
||||||
|
|
@ -197,12 +183,6 @@ func (f *Formation) GetMatrixFormattedFinalSymbols() [][]int64 {
|
||||||
f.OriginFormation.MatrixForm)
|
f.OriginFormation.MatrixForm)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetMatrixFormattedBySymbols gets symbols and places them into specific form
|
|
||||||
func (f *Formation) GetMatrixFormattedBySymbols(symbols []int64) [][]int64 {
|
|
||||||
return formation.FormatSymbols(symbols,
|
|
||||||
f.OriginFormation.MatrixForm)
|
|
||||||
}
|
|
||||||
|
|
||||||
// SetFormattedFinalSymbols sets formed final symbols
|
// SetFormattedFinalSymbols sets formed final symbols
|
||||||
func (f *Formation) SetFormattedFinalSymbols(symbols [][]int64) intf.Formation {
|
func (f *Formation) SetFormattedFinalSymbols(symbols [][]int64) intf.Formation {
|
||||||
f.Formation.FinalSymbols = formation.DeformatSymbols(symbols)
|
f.Formation.FinalSymbols = formation.DeformatSymbols(symbols)
|
||||||
|
|
|
||||||
|
|
@ -45,9 +45,6 @@ func (m *Machine) BaseBets() []int64 {
|
||||||
func (m *Machine) BetChangeList() []float64 {
|
func (m *Machine) BetChangeList() []float64 {
|
||||||
return m.MachineDesc.BetChangeList()
|
return m.MachineDesc.BetChangeList()
|
||||||
}
|
}
|
||||||
func (m *Machine) GetBetIndexByVal(val float64) []int64 {
|
|
||||||
return m.MachineDesc.GetBetIndexByVal(val)
|
|
||||||
}
|
|
||||||
func (m *Machine) Choice() int64 {
|
func (m *Machine) Choice() int64 {
|
||||||
if m.UserData().ForceChoice > 0 {
|
if m.UserData().ForceChoice > 0 {
|
||||||
return m.UserData().ForceChoice
|
return m.UserData().ForceChoice
|
||||||
|
|
|
||||||
|
|
@ -1,36 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PluginChooseWheel struct {
|
|
||||||
generic.PluginBase
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginChooseWheel) Theme() string {
|
|
||||||
return key.GatesOfOlympus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginChooseWheel) OnStepBegin(m intf.Master) {
|
|
||||||
isFreeSpin := m.Next().GetType() == FreeSpin
|
|
||||||
typ := m.Choice()
|
|
||||||
|
|
||||||
nodeName := Descx(m).RandWheel(isFreeSpin, typ)
|
|
||||||
if !isFreeSpin {
|
|
||||||
if typ == RoundTypeMoreScatter {
|
|
||||||
nodeName = "MoreScatter" + nodeName
|
|
||||||
m.SetRatio(key.MachineRatioMoreCoinMoreBet, 1.25)
|
|
||||||
} else if typ == RoundTypeBuyFreeSpin {
|
|
||||||
m.SetRatio(key.MachineRatioMoreCoinSameBet, 100)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
m.Set(key.MachineFormationSeqsDesc, nodeName)
|
|
||||||
|
|
||||||
// 设置日志中的RoundType
|
|
||||||
if m.Next().GetType() == BaseSpin {
|
|
||||||
m.Set(key.MachineRoundType, typ)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,30 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
const (
|
|
||||||
BaseSpin = "BaseSpin"
|
|
||||||
FreeSpin = "FreeSpin"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
RoundTypeBaseSpin = iota
|
|
||||||
RoundTypeMoreScatter // 25% more cost
|
|
||||||
RoundTypeBuyFreeSpin // 10000% more cost
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
MultiplierBaseSpin = iota
|
|
||||||
MultiplierFreeSpin
|
|
||||||
MultiplierNoWin
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
SymbolMultiplier = int64(12)
|
|
||||||
)
|
|
||||||
|
|
||||||
type CustomFortune struct {
|
|
||||||
FreeStatus int `json:"fs"`
|
|
||||||
FreeSpinNum int64 `json:"fsn"` //剩余freespin
|
|
||||||
FreeNumMax int64 `json:"fnm"` //总次数
|
|
||||||
FreeNumTrigger int64 `json:"fnt"` //新增freespin
|
|
||||||
ScatterWin int64 `json:"sw,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"encoding/json"
|
|
||||||
"github.com/tomas-qstarrs/boost/randx"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/exported/excel2go/structs"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/errors"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/desc"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
|
||||||
)
|
|
||||||
|
|
||||||
type descx struct {
|
|
||||||
*randx.Randx
|
|
||||||
*desc.NodeDesc
|
|
||||||
}
|
|
||||||
|
|
||||||
func Descx(m intf.Master) *descx {
|
|
||||||
return &descx{
|
|
||||||
Randx: m.Randx(),
|
|
||||||
NodeDesc: m.Desc(),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n descx) RandWheel(isFreeSpin bool, typ int64) string {
|
|
||||||
sheet := n.DefaultSheet("ReelChoose")
|
|
||||||
rows, ok := sheet.([]*structs.GatesOfOlympusReelChoose)
|
|
||||||
if !ok {
|
|
||||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "ReelChoose"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var weights = make(map[int]int64, 0)
|
|
||||||
for idx, row := range rows {
|
|
||||||
if row.IsFreeSpin == isFreeSpin {
|
|
||||||
weights[idx] = row.Weights[int(typ)]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
idx := randx.RandWeightMap(n.Randx, weights)
|
|
||||||
return rows[idx].NodeType
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n descx) RandMultiplier(typ int64) int64 {
|
|
||||||
sheet := n.DefaultSheet("Multiplier")
|
|
||||||
rows, ok := sheet.([]*structs.GatesOfOlympusMultiplier)
|
|
||||||
if !ok {
|
|
||||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "Multiplier"))
|
|
||||||
}
|
|
||||||
|
|
||||||
var weights = make([]int64, 0, len(rows))
|
|
||||||
for _, row := range rows {
|
|
||||||
weights = append(weights, row.Weights[typ])
|
|
||||||
}
|
|
||||||
|
|
||||||
idx := randx.RandWeight(n.Randx, weights)
|
|
||||||
return rows[idx].ID
|
|
||||||
}
|
|
||||||
|
|
||||||
func (n descx) GetMultiBySymbol(symbol int64) int64 {
|
|
||||||
sheet := n.KeySheet("Multiplier", "Default", "ID")
|
|
||||||
rows, ok := sheet.(map[int64]*structs.GatesOfOlympusMultiplier)
|
|
||||||
if !ok {
|
|
||||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "Multiplier"))
|
|
||||||
}
|
|
||||||
|
|
||||||
row, ok := rows[symbol]
|
|
||||||
if !ok {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return row.Multiple
|
|
||||||
}
|
|
||||||
func (n descx) GetMultiStr() string {
|
|
||||||
sheet := n.KeySheet("Multiplier", "Default", "ID")
|
|
||||||
rows, ok := sheet.(map[int64]*structs.GatesOfOlympusMultiplier)
|
|
||||||
if !ok {
|
|
||||||
panic(errors.ConfigTypeError.ErrorWith(n.Theme, "Multiplier"))
|
|
||||||
}
|
|
||||||
var multiples = make(map[int64]int64)
|
|
||||||
for _, v := range rows {
|
|
||||||
multiples[v.ID] = v.Multiple
|
|
||||||
}
|
|
||||||
multiplesByte, _ := json.Marshal(multiples)
|
|
||||||
return string(multiplesByte)
|
|
||||||
}
|
|
||||||
|
|
@ -1,239 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
"github.com/mohae/deepcopy"
|
|
||||||
"github.com/tomas-qstarrs/boost/mathx"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/module/shared"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PluginEliminate struct {
|
|
||||||
generic.PluginBase
|
|
||||||
}
|
|
||||||
|
|
||||||
type CustomEliminate struct {
|
|
||||||
LinkPositions []*shared.LinkPositions `json:"LinkPositions,omitempty"` //消除的位置
|
|
||||||
AppendSymbols [][]int64 `json:"AppendSymbols,omitempty"` //新增
|
|
||||||
FormattedSymbols [][]int64 `json:"FormattedSymbols,omitempty"` //最终的结果
|
|
||||||
LinePays []float64 `json:"LinePays,omitempty"` //赔付
|
|
||||||
WinCoins []float64 `json:"WinCoins,omitempty"` //输赢
|
|
||||||
MultiStr string `json:"multi_str,omitempty"`
|
|
||||||
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
|
|
||||||
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CustomMulti struct {
|
|
||||||
Multi int64
|
|
||||||
MultiStr string
|
|
||||||
MultiStrVal string
|
|
||||||
}
|
|
||||||
|
|
||||||
type CustomPay struct {
|
|
||||||
Pay float64
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginEliminate) Theme() string {
|
|
||||||
return key.GatesOfOlympus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginEliminate) Customs() []interface{} {
|
|
||||||
return []interface{}{
|
|
||||||
&CustomEliminate{},
|
|
||||||
&CustomMulti{},
|
|
||||||
&CustomPay{},
|
|
||||||
&CustomFortune{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginEliminate) OnInit(m intf.Master) {
|
|
||||||
if len(m.RootCustoms(&CustomMulti{})) == 0 {
|
|
||||||
m.AddRootFeature(&CustomMulti{})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginEliminate) OnEnterNode(m intf.Master) {
|
|
||||||
if m.Cursor().GetType() == key.BaseSpin {
|
|
||||||
m.RootCustom(&CustomMulti{}).(*CustomMulti).Multi = 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginEliminate) BeforeSpin(m intf.Master) {
|
|
||||||
m.AddCursorFeature(&CustomPay{}).SetLifetime(1)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginEliminate) AfterSpin(m intf.Master) {
|
|
||||||
cursorFormation := m.CursorFormation()
|
|
||||||
formattedSymbols := cursorFormation.GetReelFormattedDisplaySymbols()
|
|
||||||
|
|
||||||
//f := getCustomFortune(m)
|
|
||||||
//if f.FreeSpinNum == 13 {
|
|
||||||
// formattedSymbols[0][0] = 1
|
|
||||||
// formattedSymbols[0][1] = 1
|
|
||||||
// formattedSymbols[0][2] = 1
|
|
||||||
//}
|
|
||||||
|
|
||||||
appendFormattedSymbols := deepcopy.Copy(formattedSymbols).([][]int64)
|
|
||||||
randPositions := cursorFormation.GetRandPositions()
|
|
||||||
|
|
||||||
// 清空基础赢钱
|
|
||||||
m.CursorFormation().SetWin(0)
|
|
||||||
|
|
||||||
// 获取custom
|
|
||||||
customMulti := m.RootCustom(&CustomMulti{}).(*CustomMulti)
|
|
||||||
customPay := m.CursorCustom(&CustomPay{}).(*CustomPay)
|
|
||||||
|
|
||||||
// 根据赔付计算multi type
|
|
||||||
linkPositions, _, linePays := m.TryLinkMatrixSymbols(1, formattedSymbols)
|
|
||||||
|
|
||||||
var multiType int64
|
|
||||||
if mathx.Sum(linePays) == 0 {
|
|
||||||
multiType = MultiplierNoWin
|
|
||||||
} else if m.Cursor().GetType() == key.BaseSpin {
|
|
||||||
multiType = MultiplierBaseSpin
|
|
||||||
} else {
|
|
||||||
multiType = MultiplierFreeSpin
|
|
||||||
}
|
|
||||||
|
|
||||||
// 替换Formation元素
|
|
||||||
for colIdx, symbols := range formattedSymbols {
|
|
||||||
for rowIdx, symbol := range symbols {
|
|
||||||
if symbol == SymbolMultiplier {
|
|
||||||
multiSymbol := Descx(m).RandMultiplier(multiType)
|
|
||||||
formattedSymbols[int64(colIdx)][5-int64(len(symbols))+int64(rowIdx)] = multiSymbol
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 存储 Formation元素
|
|
||||||
cursorFormation.SetFormattedDisplaySymbols(formattedSymbols)
|
|
||||||
defer cursorFormation.SetFormattedFinalSymbols(formattedSymbols)
|
|
||||||
|
|
||||||
// 有消除
|
|
||||||
for mathx.Sum(linePays) > 0 {
|
|
||||||
// 计算连线赢钱
|
|
||||||
lineNum := len(linePays)
|
|
||||||
winCoins := make([]float64, lineNum)
|
|
||||||
for lineIdx, pay := range linePays {
|
|
||||||
winCoins[lineIdx] = float64(m.Cursor().GetSingleBet()) * float64(pay)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 标记消除的元素
|
|
||||||
for _, link := range linkPositions {
|
|
||||||
for _, pos := range link.Positions {
|
|
||||||
row, col := cursorFormation.PositionToCoords(pos)
|
|
||||||
formattedSymbols[col][row] = -1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// 删除消除的元素
|
|
||||||
for colIndex := range formattedSymbols {
|
|
||||||
for rowIndex := 0; rowIndex < len(formattedSymbols[colIndex]); rowIndex++ {
|
|
||||||
if formattedSymbols[colIndex][rowIndex] == -1 {
|
|
||||||
formattedSymbols[colIndex] = append(formattedSymbols[colIndex][:rowIndex], formattedSymbols[colIndex][rowIndex+1:]...)
|
|
||||||
rowIndex--
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var symbolsAbove []int64
|
|
||||||
// 获取新得元素
|
|
||||||
for colIdx, symbols := range formattedSymbols {
|
|
||||||
// 获取后续(向前)元素
|
|
||||||
appendFormattedSymbols[colIdx] = cursorFormation.GetReelSymbols(int64(colIdx),
|
|
||||||
randPositions[colIdx]-int64(5-len(symbols)), int64(5-len(symbols)))
|
|
||||||
|
|
||||||
symbolsAbove = append(symbolsAbove, cursorFormation.GetReelSymbols(int64(colIdx),
|
|
||||||
randPositions[colIdx]-int64(5-len(symbols))-1, 1)...)
|
|
||||||
|
|
||||||
for rowIdx, symbol := range appendFormattedSymbols[colIdx] {
|
|
||||||
if symbol == SymbolMultiplier {
|
|
||||||
multiSymbol := Descx(m).RandMultiplier(multiType)
|
|
||||||
appendFormattedSymbols[colIdx][rowIdx] = multiSymbol
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 拼接剩余元素和后续(向前)元素
|
|
||||||
formattedSymbols[colIdx] = deepcopy.Copy(appendFormattedSymbols[colIdx]).([]int64)
|
|
||||||
formattedSymbols[colIdx] = append(formattedSymbols[colIdx], symbols...)
|
|
||||||
|
|
||||||
// randPosition 向前移动
|
|
||||||
randPositions[colIdx] -= int64(len(appendFormattedSymbols[colIdx]))
|
|
||||||
}
|
|
||||||
|
|
||||||
// 添加后续feature,这里是消除
|
|
||||||
m.AddCursorFeature(&CustomEliminate{
|
|
||||||
LinkPositions: linkPositions,
|
|
||||||
AppendSymbols: appendFormattedSymbols,
|
|
||||||
FormattedSymbols: formattedSymbols,
|
|
||||||
LinePays: linePays,
|
|
||||||
WinCoins: winCoins,
|
|
||||||
MultiStr: Descx(m).GetMultiStr(),
|
|
||||||
SymbolsAbove: symbolsAbove,
|
|
||||||
SymbolsBelow: m.CursorFormation().GetSymbolsBelow(),
|
|
||||||
}).SetLifetime(1)
|
|
||||||
|
|
||||||
// 累加pay
|
|
||||||
customPay.Pay += mathx.Sum(linePays)
|
|
||||||
|
|
||||||
// 连线
|
|
||||||
linkPositions, _, linePays = m.TryLinkMatrixSymbols(1, formattedSymbols)
|
|
||||||
}
|
|
||||||
|
|
||||||
// 增加multi
|
|
||||||
var multiSum int64
|
|
||||||
maxColCount := 0
|
|
||||||
|
|
||||||
// 找到最长的列数
|
|
||||||
for _, row := range formattedSymbols {
|
|
||||||
if len(row) > maxColCount {
|
|
||||||
maxColCount = len(row)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
flatIndex := 0 // 当前符号在一维数组中的索引
|
|
||||||
|
|
||||||
customMulti.MultiStr = ""
|
|
||||||
customMulti.MultiStrVal = ""
|
|
||||||
|
|
||||||
// 遍历列优先的索引
|
|
||||||
for col := 0; col < maxColCount; col++ {
|
|
||||||
for row := 0; row < len(formattedSymbols); row++ {
|
|
||||||
rowSymbols := formattedSymbols[row] // 当前行的符号
|
|
||||||
if col < len(rowSymbols) { // 确保当前列存在
|
|
||||||
symbol := rowSymbols[col]
|
|
||||||
multi := Descx(m).GetMultiBySymbol(symbol)
|
|
||||||
multiSum += multi
|
|
||||||
|
|
||||||
// 打印 Symbol 和其一维索引
|
|
||||||
//fmt.Printf("Symbol: %s, Position in one-dimensional array: %d\n", symbol, flatIndex)
|
|
||||||
if multi > 0 {
|
|
||||||
if len(customMulti.MultiStr) > 0 {
|
|
||||||
customMulti.MultiStr += ";"
|
|
||||||
customMulti.MultiStrVal += ","
|
|
||||||
}
|
|
||||||
customMulti.MultiStr += fmt.Sprintf("%v~%v~%v", 12, flatIndex, multi)
|
|
||||||
customMulti.MultiStrVal += fmt.Sprintf("%v", multi)
|
|
||||||
}
|
|
||||||
flatIndex++ // 索引递增
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if customPay.Pay > 0 {
|
|
||||||
if multiSum == 0 {
|
|
||||||
win := int64(customPay.Pay * float64(m.Cursor().GetSingleBet()))
|
|
||||||
m.CursorFeature(&CustomPay{}).SetWin(win)
|
|
||||||
} else {
|
|
||||||
customMulti.Multi += multiSum
|
|
||||||
var win int64
|
|
||||||
if customMulti.Multi == 0 {
|
|
||||||
win = int64(customPay.Pay * float64(m.Cursor().GetSingleBet()))
|
|
||||||
} else {
|
|
||||||
win = int64(customPay.Pay * float64(m.Cursor().GetSingleBet()) * float64(customMulti.Multi))
|
|
||||||
}
|
|
||||||
m.CursorFeature(&CustomPay{}).SetWin(win)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,106 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/tomas-qstarrs/boost/mathx"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PluginFreeSpin struct {
|
|
||||||
generic.PluginScatter
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginFreeSpin) Theme() string {
|
|
||||||
return key.GatesOfOlympus
|
|
||||||
}
|
|
||||||
|
|
||||||
// 获取特性数据
|
|
||||||
func getCustomFortune(m intf.Master) *CustomFortune {
|
|
||||||
customFortune := new(CustomFortune)
|
|
||||||
if len(m.CursorCustoms(customFortune)) == 0 {
|
|
||||||
m.AddCursorFeature(customFortune)
|
|
||||||
}
|
|
||||||
return m.CursorCustom(customFortune).(*CustomFortune)
|
|
||||||
}
|
|
||||||
|
|
||||||
// AfterSpin implements generic.PluginBase.AfterSpin
|
|
||||||
func (p *PluginFreeSpin) AfterSpin(m intf.Master) {
|
|
||||||
switch m.Cursor().GetType() {
|
|
||||||
case key.BaseSpin:
|
|
||||||
p.AfterBaseSpin(m)
|
|
||||||
case key.FreeSpin:
|
|
||||||
p.AfterFreeSpin(m)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// AfterBaseSpin is called after base spin
|
|
||||||
func (p *PluginFreeSpin) AfterBaseSpin(m intf.Master) {
|
|
||||||
addTimes, win := p.GetScatterInfo(m, false)
|
|
||||||
if addTimes > 0 {
|
|
||||||
//m.AddNodeOnCursor(key.FreeSpin, addTimes)
|
|
||||||
customFortune := getCustomFortune(m)
|
|
||||||
customFortune.FreeStatus = 1
|
|
||||||
customFortune.FreeNumMax += addTimes
|
|
||||||
customFortune.FreeNumTrigger = addTimes
|
|
||||||
customFortune.FreeSpinNum = addTimes
|
|
||||||
customFortune.ScatterWin = win
|
|
||||||
m.AddNodeFeature(m.AddNodeOnCursor(key.FreeSpin, addTimes).GetID(), customFortune).SetLifetime(addTimes)
|
|
||||||
}
|
|
||||||
if win > 0 {
|
|
||||||
m.AddCursorFeature(&generic.CustomScatterWin{}).SetWin(win)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// AfterFreeSpin is called after free spin
|
|
||||||
func (p *PluginFreeSpin) AfterFreeSpin(m intf.Master) {
|
|
||||||
addTimes, win := p.GetScatterInfo(m, true)
|
|
||||||
customFortune := getCustomFortune(m)
|
|
||||||
if addTimes > 0 {
|
|
||||||
customFortune.FreeStatus = 2
|
|
||||||
customFortune.FreeNumTrigger = addTimes
|
|
||||||
customFortune.FreeNumMax += addTimes
|
|
||||||
customFortune.FreeSpinNum += addTimes
|
|
||||||
customFortune.ScatterWin = win
|
|
||||||
m.AddProgress(addTimes)
|
|
||||||
m.AddCursorFeature(&generic.CustomExtraFreeSpin{ExtraTimes: addTimes}).SetLifetime(1)
|
|
||||||
} else {
|
|
||||||
customFortune.FreeStatus = 0
|
|
||||||
customFortune.FreeNumTrigger = 0
|
|
||||||
if customFortune.FreeSpinNum > 0 {
|
|
||||||
if customFortune.FreeSpinNum == 1 {
|
|
||||||
customFortune.FreeStatus = 3
|
|
||||||
}
|
|
||||||
customFortune.FreeSpinNum--
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if win > 0 {
|
|
||||||
m.AddCursorFeature(&generic.CustomScatterWin{}).SetWin(win)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetScatterInfo gets add free spin times & pay rate
|
|
||||||
func (p *PluginFreeSpin) GetScatterInfo(m intf.Master, inFreeSpin bool) (int64, int64) {
|
|
||||||
var scatterCount int64
|
|
||||||
symbols := m.CursorFormation().GetFinalSymbols()
|
|
||||||
scatterSymbols := p.Scatters(m)
|
|
||||||
for _, scatterSymbol := range scatterSymbols {
|
|
||||||
scatterCount += int64(mathx.Count(scatterSymbol, symbols))
|
|
||||||
}
|
|
||||||
|
|
||||||
if scatterCount == 0 {
|
|
||||||
return 0, 0
|
|
||||||
}
|
|
||||||
|
|
||||||
freeSpinCount := generic.Descx(m).FreeSpin(inFreeSpin, scatterCount)
|
|
||||||
|
|
||||||
payRate := generic.Descx(m).ScatterPayRate(inFreeSpin, scatterCount)
|
|
||||||
|
|
||||||
win := m.Bet() * payRate
|
|
||||||
|
|
||||||
if m.Choice() == RoundTypeMoreScatter {
|
|
||||||
win = int64(mathx.SafeDiv(win, 1.25))
|
|
||||||
}
|
|
||||||
|
|
||||||
return freeSpinCount, win
|
|
||||||
}
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
var Plugins = []interface{}{
|
|
||||||
&PluginChooseWheel{},
|
|
||||||
&PluginEliminate{},
|
|
||||||
&PluginFreeSpin{},
|
|
||||||
&PluginSpecial{},
|
|
||||||
}
|
|
||||||
|
|
||||||
var SimulatorPlugins = []interface{}{}
|
|
||||||
|
|
@ -1,77 +0,0 @@
|
||||||
package gatesofolympus
|
|
||||||
|
|
||||||
import (
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/internal/generic/key"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/intf"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/generic"
|
|
||||||
)
|
|
||||||
|
|
||||||
type PluginSpecial struct {
|
|
||||||
generic.PluginBase
|
|
||||||
}
|
|
||||||
type Special struct {
|
|
||||||
CustomEliminates []CustomEliminate `json:"CustomEliminates,omitempty"` //消除的次数 一次为一个结果
|
|
||||||
FreeStatus int `json:"fs"`
|
|
||||||
FreeSpinNum int64 `json:"fsn,omitempty"` //剩余freespin
|
|
||||||
FreeNumMax int64 `json:"fnm,omitempty"` //总次数
|
|
||||||
FreeNumTrigger int64 `json:"fnt,omitempty"` //新增freespin
|
|
||||||
Pay float64 `json:"Pay,omitempty"`
|
|
||||||
Multi int64 `json:"Multi,omitempty"`
|
|
||||||
MultiStr string `json:"multi_str,omitempty"`
|
|
||||||
MultiStrVal string `json:"multi_str_val,omitempty"`
|
|
||||||
SymbolsAbove []int64 `json:"symbols_above,omitempty"`
|
|
||||||
SymbolsBelow []int64 `json:"symbols_below,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginSpecial) Theme() string {
|
|
||||||
return key.GatesOfOlympus
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PluginSpecial) Customs() []interface{} {
|
|
||||||
return []interface{}{
|
|
||||||
&Special{},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
func (p *PluginSpecial) getCustomSpecial(m intf.Master) *Special {
|
|
||||||
customSpecial := new(Special)
|
|
||||||
if len(m.CursorCustoms(customSpecial)) == 0 {
|
|
||||||
m.AddCursorFeature(customSpecial).SetLifetime(0)
|
|
||||||
}
|
|
||||||
return m.CursorCustom(customSpecial).(*Special)
|
|
||||||
}
|
|
||||||
func (p *PluginSpecial) AfterSpin(m intf.Master) {
|
|
||||||
//cf := m.CursorFeatures(&CustomEliminate{})
|
|
||||||
ces := m.CursorCustoms(&CustomEliminate{})
|
|
||||||
sp := p.getCustomSpecial(m)
|
|
||||||
if len(ces) > 0 {
|
|
||||||
for _, i2 := range ces {
|
|
||||||
ce := i2.(*CustomEliminate)
|
|
||||||
wc := make([]float64, len(ce.WinCoins))
|
|
||||||
for j := 0; j < len(ce.WinCoins); j++ {
|
|
||||||
wc[j] = ce.WinCoins[j] / 10000
|
|
||||||
}
|
|
||||||
sp.CustomEliminates = append(sp.CustomEliminates, CustomEliminate{
|
|
||||||
LinkPositions: ce.LinkPositions,
|
|
||||||
AppendSymbols: ce.AppendSymbols,
|
|
||||||
FormattedSymbols: ce.FormattedSymbols,
|
|
||||||
LinePays: ce.LinePays,
|
|
||||||
WinCoins: wc,
|
|
||||||
MultiStr: ce.MultiStr,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
customFortune := getCustomFortune(m)
|
|
||||||
sp.FreeStatus = customFortune.FreeStatus
|
|
||||||
sp.FreeSpinNum = customFortune.FreeSpinNum
|
|
||||||
sp.FreeNumMax = customFortune.FreeNumMax
|
|
||||||
sp.FreeNumTrigger = customFortune.FreeNumTrigger
|
|
||||||
|
|
||||||
customMulti := m.RootCustom(&CustomMulti{}).(*CustomMulti)
|
|
||||||
customPay := m.CursorCustom(&CustomPay{}).(*CustomPay)
|
|
||||||
sp.Multi = customMulti.Multi
|
|
||||||
sp.MultiStr = customMulti.MultiStr
|
|
||||||
sp.MultiStrVal = customMulti.MultiStrVal
|
|
||||||
sp.Pay = customPay.Pay
|
|
||||||
sp.SymbolsAbove = m.CursorFormation().GetSymbolsAbove()
|
|
||||||
sp.SymbolsBelow = m.CursorFormation().GetSymbolsBelow()
|
|
||||||
}
|
|
||||||
|
|
@ -8,7 +8,6 @@ import (
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortuneox"
|
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortuneox"
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortunerabbit"
|
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortunerabbit"
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortunetiger"
|
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/fortunetiger"
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/gatesofolympus"
|
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/test"
|
"mongo.games.com/game/gamesrv/slotspkg/slots/plugin/test"
|
||||||
"mongo.games.com/game/gamesrv/slotspkg/slots/reg"
|
"mongo.games.com/game/gamesrv/slotspkg/slots/reg"
|
||||||
)
|
)
|
||||||
|
|
@ -21,7 +20,6 @@ func Init() {
|
||||||
reg.Register(fortunedragon.Plugins...)
|
reg.Register(fortunedragon.Plugins...)
|
||||||
reg.Register(fortunemouse.Plugins...)
|
reg.Register(fortunemouse.Plugins...)
|
||||||
reg.Register(cashmania.Plugins...)
|
reg.Register(cashmania.Plugins...)
|
||||||
reg.Register(gatesofolympus.Plugins...)
|
|
||||||
reg.Register(test.Plugins...)
|
reg.Register(test.Plugins...)
|
||||||
|
|
||||||
if global.Mock {
|
if global.Mock {
|
||||||
|
|
@ -30,8 +28,6 @@ func Init() {
|
||||||
reg.Register(fortunerabbit.SimulatorPlugins...)
|
reg.Register(fortunerabbit.SimulatorPlugins...)
|
||||||
reg.Register(fortunedragon.SimulatorPlugins...)
|
reg.Register(fortunedragon.SimulatorPlugins...)
|
||||||
reg.Register(cashmania.SimulatorPlugins...)
|
reg.Register(cashmania.SimulatorPlugins...)
|
||||||
reg.Register(gatesofolympus.SimulatorPlugins...)
|
|
||||||
reg.Register(test.SimulatorPlugins...)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,15 +39,11 @@ func Close() {
|
||||||
reg.Deregister(fortunedragon.Plugins...)
|
reg.Deregister(fortunedragon.Plugins...)
|
||||||
reg.Deregister(fortunemouse.Plugins...)
|
reg.Deregister(fortunemouse.Plugins...)
|
||||||
reg.Deregister(cashmania.Plugins...)
|
reg.Deregister(cashmania.Plugins...)
|
||||||
reg.Deregister(gatesofolympus.Plugins...)
|
|
||||||
reg.Deregister(test.Plugins...)
|
|
||||||
if global.Mock {
|
if global.Mock {
|
||||||
reg.Deregister(fortuneox.SimulatorPlugins...)
|
reg.Deregister(fortuneox.SimulatorPlugins...)
|
||||||
reg.Deregister(fortunetiger.SimulatorPlugins...)
|
reg.Deregister(fortunetiger.SimulatorPlugins...)
|
||||||
reg.Deregister(fortunerabbit.SimulatorPlugins...)
|
reg.Deregister(fortunerabbit.SimulatorPlugins...)
|
||||||
reg.Deregister(fortunedragon.SimulatorPlugins...)
|
reg.Deregister(fortunedragon.SimulatorPlugins...)
|
||||||
reg.Deregister(cashmania.SimulatorPlugins...)
|
reg.Deregister(cashmania.SimulatorPlugins...)
|
||||||
reg.Deregister(gatesofolympus.SimulatorPlugins...)
|
|
||||||
reg.Deregister(test.SimulatorPlugins...)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
1
go.mod
1
go.mod
|
|
@ -94,7 +94,6 @@ require (
|
||||||
github.com/xdg-go/scram v1.1.2 // indirect
|
github.com/xdg-go/scram v1.1.2 // indirect
|
||||||
github.com/xdg-go/stringprep v1.0.4 // indirect
|
github.com/xdg-go/stringprep v1.0.4 // indirect
|
||||||
github.com/xtaci/kcp-go v5.4.20+incompatible // indirect
|
github.com/xtaci/kcp-go v5.4.20+incompatible // indirect
|
||||||
github.com/xtaci/lossyconn v0.0.0-20200209145036-adba10fffc37 // indirect
|
|
||||||
github.com/xuri/efp v0.0.0-20241211021726-c4e992084aa6 // indirect
|
github.com/xuri/efp v0.0.0-20241211021726-c4e992084aa6 // indirect
|
||||||
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect
|
github.com/xuri/nfp v0.0.0-20240318013403-ab9948c2c4a7 // indirect
|
||||||
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // indirect
|
||||||
|
|
|
||||||
|
|
@ -101,11 +101,6 @@ func NewLoginLog(snId, logType int32, tel, ip, platform, channel, promoter, pack
|
||||||
return cl
|
return cl
|
||||||
}
|
}
|
||||||
|
|
||||||
type LoginErrorLog struct {
|
|
||||||
TypeId int32
|
|
||||||
Ts int64
|
|
||||||
}
|
|
||||||
|
|
||||||
//func InsertLoginLogs(logs ...*LoginLog) (err error) {
|
//func InsertLoginLogs(logs ...*LoginLog) (err error) {
|
||||||
// if rpcCli == nil {
|
// if rpcCli == nil {
|
||||||
// logger.Logger.Error("model.InsertLoginLogs rpcCli == nil")
|
// logger.Logger.Error("model.InsertLoginLogs rpcCli == nil")
|
||||||
|
|
|
||||||
|
|
@ -564,9 +564,6 @@ type PushCoinData struct {
|
||||||
Exchange map[int32]int32 // 兑换次数 兑换id:兑换次数
|
Exchange map[int32]int32 // 兑换次数 兑换id:兑换次数
|
||||||
Dram int // 抽奖次数
|
Dram int // 抽奖次数
|
||||||
Items map[int32]int64 // 道具
|
Items map[int32]int64 // 道具
|
||||||
Turn []int32 // 转盘
|
|
||||||
Next int32 // 下次中奖位置
|
|
||||||
PoolV []int64 // 奖池
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type WelfareData struct {
|
type WelfareData struct {
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,6 @@ const (
|
||||||
BackOnlineGame = "back_onlinegame"
|
BackOnlineGame = "back_onlinegame"
|
||||||
BackRedPacket = "back_redpacket"
|
BackRedPacket = "back_redpacket"
|
||||||
NianPlayerRank = "log_nianplayerrank"
|
NianPlayerRank = "log_nianplayerrank"
|
||||||
LoginError = "log_loginerror"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// go后端
|
// go后端
|
||||||
|
|
|
||||||
|
|
@ -467,6 +467,8 @@ func (x *ExchangeInfo) GetTotalTimes() int64 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//抽奖信息
|
||||||
|
//PACKET_NotifyDrawInfo
|
||||||
type DrawInfo struct {
|
type DrawInfo struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -474,7 +476,8 @@ type DrawInfo struct {
|
||||||
|
|
||||||
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //抽奖id
|
Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` //抽奖id
|
||||||
ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id
|
ItemId int32 `protobuf:"varint,2,opt,name=ItemId,proto3" json:"ItemId,omitempty"` //道具id
|
||||||
ItemNum int64 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量
|
ItemNum int32 `protobuf:"varint,3,opt,name=ItemNum,proto3" json:"ItemNum,omitempty"` //道具数量
|
||||||
|
Coin int64 `protobuf:"varint,4,opt,name=Coin,proto3" json:"Coin,omitempty"` //价值
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *DrawInfo) Reset() {
|
func (x *DrawInfo) Reset() {
|
||||||
|
|
@ -523,68 +526,18 @@ func (x *DrawInfo) GetItemId() int32 {
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *DrawInfo) GetItemNum() int64 {
|
func (x *DrawInfo) GetItemNum() int32 {
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.ItemNum
|
return x.ItemNum
|
||||||
}
|
}
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
//抽奖信息
|
func (x *DrawInfo) GetCoin() int64 {
|
||||||
//PACKET_NotifyDrawInfo
|
|
||||||
type NotifyDrawInfo struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Draw *DrawInfo `protobuf:"bytes,1,opt,name=Draw,proto3" json:"Draw,omitempty"` // 中奖信息
|
|
||||||
Info []*DrawInfo `protobuf:"bytes,2,rep,name=Info,proto3" json:"Info,omitempty"` // 刷新信息
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *NotifyDrawInfo) Reset() {
|
|
||||||
*x = NotifyDrawInfo{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[5]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *NotifyDrawInfo) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*NotifyDrawInfo) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *NotifyDrawInfo) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[5]
|
|
||||||
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 NotifyDrawInfo.ProtoReflect.Descriptor instead.
|
|
||||||
func (*NotifyDrawInfo) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{5}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *NotifyDrawInfo) GetDraw() *DrawInfo {
|
|
||||||
if x != nil {
|
if x != nil {
|
||||||
return x.Draw
|
return x.Coin
|
||||||
}
|
}
|
||||||
return nil
|
return 0
|
||||||
}
|
|
||||||
|
|
||||||
func (x *NotifyDrawInfo) GetInfo() []*DrawInfo {
|
|
||||||
if x != nil {
|
|
||||||
return x.Info
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//玩家操作
|
//玩家操作
|
||||||
|
|
@ -602,7 +555,7 @@ type CSPushCoinPlayerOp struct {
|
||||||
func (x *CSPushCoinPlayerOp) Reset() {
|
func (x *CSPushCoinPlayerOp) Reset() {
|
||||||
*x = CSPushCoinPlayerOp{}
|
*x = CSPushCoinPlayerOp{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[6]
|
mi := &file_protocol_activity_pushcoin_proto_msgTypes[5]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -615,7 +568,7 @@ func (x *CSPushCoinPlayerOp) String() string {
|
||||||
func (*CSPushCoinPlayerOp) ProtoMessage() {}
|
func (*CSPushCoinPlayerOp) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message {
|
func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[6]
|
mi := &file_protocol_activity_pushcoin_proto_msgTypes[5]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -628,7 +581,7 @@ func (x *CSPushCoinPlayerOp) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use CSPushCoinPlayerOp.ProtoReflect.Descriptor instead.
|
// Deprecated: Use CSPushCoinPlayerOp.ProtoReflect.Descriptor instead.
|
||||||
func (*CSPushCoinPlayerOp) Descriptor() ([]byte, []int) {
|
func (*CSPushCoinPlayerOp) Descriptor() ([]byte, []int) {
|
||||||
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{6}
|
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{5}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes {
|
func (x *CSPushCoinPlayerOp) GetOpCode() OpCodes {
|
||||||
|
|
@ -667,7 +620,7 @@ type SCPushCoinPlayerOp struct {
|
||||||
func (x *SCPushCoinPlayerOp) Reset() {
|
func (x *SCPushCoinPlayerOp) Reset() {
|
||||||
*x = SCPushCoinPlayerOp{}
|
*x = SCPushCoinPlayerOp{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[7]
|
mi := &file_protocol_activity_pushcoin_proto_msgTypes[6]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -680,7 +633,7 @@ func (x *SCPushCoinPlayerOp) String() string {
|
||||||
func (*SCPushCoinPlayerOp) ProtoMessage() {}
|
func (*SCPushCoinPlayerOp) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message {
|
func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[7]
|
mi := &file_protocol_activity_pushcoin_proto_msgTypes[6]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -693,7 +646,7 @@ func (x *SCPushCoinPlayerOp) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use SCPushCoinPlayerOp.ProtoReflect.Descriptor instead.
|
// Deprecated: Use SCPushCoinPlayerOp.ProtoReflect.Descriptor instead.
|
||||||
func (*SCPushCoinPlayerOp) Descriptor() ([]byte, []int) {
|
func (*SCPushCoinPlayerOp) Descriptor() ([]byte, []int) {
|
||||||
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{7}
|
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{6}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *SCPushCoinPlayerOp) GetOpRetCode() OpResultPushCoinCode {
|
func (x *SCPushCoinPlayerOp) GetOpRetCode() OpResultPushCoinCode {
|
||||||
|
|
@ -738,7 +691,7 @@ type NotifyPowerLine struct {
|
||||||
func (x *NotifyPowerLine) Reset() {
|
func (x *NotifyPowerLine) Reset() {
|
||||||
*x = NotifyPowerLine{}
|
*x = NotifyPowerLine{}
|
||||||
if protoimpl.UnsafeEnabled {
|
if protoimpl.UnsafeEnabled {
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[8]
|
mi := &file_protocol_activity_pushcoin_proto_msgTypes[7]
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
ms.StoreMessageInfo(mi)
|
ms.StoreMessageInfo(mi)
|
||||||
}
|
}
|
||||||
|
|
@ -751,7 +704,7 @@ func (x *NotifyPowerLine) String() string {
|
||||||
func (*NotifyPowerLine) ProtoMessage() {}
|
func (*NotifyPowerLine) ProtoMessage() {}
|
||||||
|
|
||||||
func (x *NotifyPowerLine) ProtoReflect() protoreflect.Message {
|
func (x *NotifyPowerLine) ProtoReflect() protoreflect.Message {
|
||||||
mi := &file_protocol_activity_pushcoin_proto_msgTypes[8]
|
mi := &file_protocol_activity_pushcoin_proto_msgTypes[7]
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
if protoimpl.UnsafeEnabled && x != nil {
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||||
if ms.LoadMessageInfo() == nil {
|
if ms.LoadMessageInfo() == nil {
|
||||||
|
|
@ -764,7 +717,7 @@ func (x *NotifyPowerLine) ProtoReflect() protoreflect.Message {
|
||||||
|
|
||||||
// Deprecated: Use NotifyPowerLine.ProtoReflect.Descriptor instead.
|
// Deprecated: Use NotifyPowerLine.ProtoReflect.Descriptor instead.
|
||||||
func (*NotifyPowerLine) Descriptor() ([]byte, []int) {
|
func (*NotifyPowerLine) Descriptor() ([]byte, []int) {
|
||||||
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{8}
|
return file_protocol_activity_pushcoin_proto_rawDescGZIP(), []int{7}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *NotifyPowerLine) GetPowerLine() int64 {
|
func (x *NotifyPowerLine) GetPowerLine() int64 {
|
||||||
|
|
@ -821,80 +774,76 @@ var file_protocol_activity_pushcoin_proto_rawDesc = []byte{
|
||||||
0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d,
|
0x54, 0x69, 0x6d, 0x65, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x54, 0x69, 0x6d,
|
||||||
0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73,
|
0x65, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d, 0x65, 0x73,
|
||||||
0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d,
|
0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x54, 0x69, 0x6d,
|
||||||
0x65, 0x73, 0x22, 0x4c, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
|
0x65, 0x73, 0x22, 0x60, 0x0a, 0x08, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e,
|
||||||
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16,
|
0x0a, 0x02, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x49, 0x64, 0x12, 0x16,
|
||||||
0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
|
0x0a, 0x06, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
|
||||||
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75,
|
0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75,
|
||||||
0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d,
|
0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x75, 0x6d,
|
||||||
0x22, 0x60, 0x0a, 0x0e, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e,
|
0x12, 0x12, 0x0a, 0x04, 0x43, 0x6f, 0x69, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x04,
|
||||||
0x66, 0x6f, 0x12, 0x26, 0x0a, 0x04, 0x44, 0x72, 0x61, 0x77, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b,
|
0x43, 0x6f, 0x69, 0x6e, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43,
|
||||||
0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x77,
|
0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f,
|
||||||
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x44, 0x72, 0x61, 0x77, 0x12, 0x26, 0x0a, 0x04, 0x49, 0x6e,
|
0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63,
|
||||||
0x66, 0x6f, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76,
|
0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06,
|
||||||
0x69, 0x74, 0x79, 0x2e, 0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x04, 0x49, 0x6e,
|
0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61,
|
||||||
0x66, 0x6f, 0x22, 0x85, 0x01, 0x0a, 0x12, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69,
|
0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d,
|
||||||
0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43,
|
0x12, 0x2a, 0x0a, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b,
|
||||||
0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69,
|
0x32, 0x12, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d,
|
||||||
0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70,
|
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xc7, 0x01, 0x0a,
|
||||||
0x43, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x18,
|
0x12, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65,
|
||||||
0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x4f, 0x70, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x2a,
|
0x72, 0x4f, 0x70, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65,
|
||||||
0x0a, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12,
|
0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74,
|
||||||
0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e,
|
0x79, 0x2e, 0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f,
|
||||||
0x66, 0x6f, 0x52, 0x06, 0x4f, 0x70, 0x49, 0x74, 0x65, 0x6d, 0x22, 0xc7, 0x01, 0x0a, 0x12, 0x53,
|
0x69, 0x6e, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64,
|
||||||
0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f,
|
0x65, 0x12, 0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
||||||
0x70, 0x12, 0x3c, 0x0a, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x01,
|
0x0e, 0x32, 0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43,
|
||||||
0x20, 0x01, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e,
|
0x6f, 0x64, 0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08,
|
||||||
|
0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16,
|
||||||
|
0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
|
||||||
|
0x67, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
|
||||||
|
0x12, 0x14, 0x0a, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52,
|
||||||
|
0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
|
||||||
|
0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77,
|
||||||
|
0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f,
|
||||||
|
0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72,
|
||||||
|
0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50,
|
||||||
|
0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10,
|
||||||
|
0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44,
|
||||||
|
0x12, 0x18, 0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43,
|
||||||
|
0x6f, 0x69, 0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41,
|
||||||
|
0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49,
|
||||||
|
0x6e, 0x66, 0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54,
|
||||||
|
0x5f, 0x53, 0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10,
|
||||||
|
0xf9, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50,
|
||||||
|
0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10,
|
||||||
|
0xfa, 0x14, 0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50,
|
||||||
|
0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10,
|
||||||
|
0xfb, 0x14, 0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74,
|
||||||
|
0x69, 0x66, 0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12,
|
||||||
|
0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79,
|
||||||
|
0x44, 0x72, 0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f,
|
||||||
|
0x70, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72,
|
||||||
|
0x6f, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12,
|
||||||
|
0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08,
|
||||||
|
0x4f, 0x50, 0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50,
|
||||||
|
0x5f, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50,
|
||||||
|
0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x14,
|
||||||
0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e,
|
0x4f, 0x70, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e,
|
||||||
0x43, 0x6f, 0x64, 0x65, 0x52, 0x09, 0x4f, 0x70, 0x52, 0x65, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x12,
|
0x43, 0x6f, 0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73,
|
||||||
0x29, 0x0a, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32,
|
0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12,
|
||||||
0x11, 0x2e, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x4f, 0x70, 0x43, 0x6f, 0x64,
|
0x17, 0x0a, 0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e,
|
||||||
0x65, 0x73, 0x52, 0x06, 0x4f, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x32, 0x0a, 0x08, 0x45, 0x78,
|
0x5f, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43,
|
||||||
0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x61,
|
0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x42, 0x65, 0x74, 0x4e, 0x6f, 0x74,
|
||||||
0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x2e, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
|
0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43,
|
||||||
0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x14,
|
0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e,
|
||||||
0x0a, 0x05, 0x42, 0x65, 0x74, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x42,
|
0x67, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x03, 0x12, 0x20, 0x0a,
|
||||||
0x65, 0x74, 0x49, 0x64, 0x22, 0x53, 0x0a, 0x0f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x50, 0x6f,
|
0x1c, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53,
|
||||||
0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x50, 0x6f, 0x77, 0x65, 0x72,
|
0x68, 0x61, 0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12,
|
||||||
0x4c, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x50, 0x6f, 0x77, 0x65,
|
0x1f, 0x0a, 0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e,
|
||||||
0x72, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69,
|
0x5f, 0x49, 0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x05,
|
||||||
0x6e, 0x65, 0x4d, 0x61, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x50, 0x6f, 0x77,
|
0x42, 0x28, 0x5a, 0x26, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e,
|
||||||
0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x4d, 0x61, 0x78, 0x2a, 0xdd, 0x01, 0x0a, 0x10, 0x50, 0x75,
|
0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f,
|
||||||
0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x49, 0x44, 0x12, 0x18,
|
0x6c, 0x2f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
||||||
0x0a, 0x14, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69,
|
0x6f, 0x33,
|
||||||
0x6e, 0x5f, 0x5a, 0x45, 0x52, 0x4f, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b,
|
|
||||||
0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66,
|
|
||||||
0x6f, 0x10, 0xf8, 0x14, 0x12, 0x1a, 0x0a, 0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53,
|
|
||||||
0x43, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xf9, 0x14,
|
|
||||||
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x43, 0x53, 0x50, 0x75, 0x73,
|
|
||||||
0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfa, 0x14,
|
|
||||||
0x12, 0x1e, 0x0a, 0x19, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x53, 0x43, 0x50, 0x75, 0x73,
|
|
||||||
0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4f, 0x70, 0x10, 0xfb, 0x14,
|
|
||||||
0x12, 0x1b, 0x0a, 0x16, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66,
|
|
||||||
0x79, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xfc, 0x14, 0x12, 0x1a, 0x0a,
|
|
||||||
0x15, 0x50, 0x41, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x79, 0x44, 0x72,
|
|
||||||
0x61, 0x77, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xfd, 0x14, 0x2a, 0x5e, 0x0a, 0x07, 0x4f, 0x70, 0x43,
|
|
||||||
0x6f, 0x64, 0x65, 0x73, 0x12, 0x0b, 0x0a, 0x07, 0x4f, 0x50, 0x5f, 0x5a, 0x65, 0x72, 0x6f, 0x10,
|
|
||||||
0x00, 0x12, 0x0a, 0x0a, 0x06, 0x4f, 0x50, 0x5f, 0x42, 0x65, 0x74, 0x10, 0x01, 0x12, 0x0b, 0x0a,
|
|
||||||
0x07, 0x4f, 0x50, 0x5f, 0x47, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50,
|
|
||||||
0x5f, 0x53, 0x68, 0x61, 0x6b, 0x65, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x4f, 0x50, 0x5f, 0x52,
|
|
||||||
0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x10, 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x4f, 0x50, 0x5f, 0x45,
|
|
||||||
0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x10, 0x05, 0x2a, 0xd2, 0x01, 0x0a, 0x14, 0x4f, 0x70,
|
|
||||||
0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f,
|
|
||||||
0x64, 0x65, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43,
|
|
||||||
0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x17, 0x0a,
|
|
||||||
0x13, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45,
|
|
||||||
0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50,
|
|
||||||
0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x42, 0x65, 0x74, 0x4e, 0x6f, 0x74, 0x45, 0x6e,
|
|
||||||
0x6f, 0x75, 0x67, 0x68, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50,
|
|
||||||
0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x45, 0x78, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65,
|
|
||||||
0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x4f,
|
|
||||||
0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x53, 0x68, 0x61,
|
|
||||||
0x6b, 0x65, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x04, 0x12, 0x1f, 0x0a,
|
|
||||||
0x1b, 0x4f, 0x50, 0x52, 0x43, 0x5f, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x5f, 0x49,
|
|
||||||
0x74, 0x65, 0x6d, 0x4e, 0x6f, 0x74, 0x45, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x10, 0x05, 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 (
|
var (
|
||||||
|
|
@ -910,7 +859,7 @@ func file_protocol_activity_pushcoin_proto_rawDescGZIP() []byte {
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_protocol_activity_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
|
var file_protocol_activity_pushcoin_proto_enumTypes = make([]protoimpl.EnumInfo, 3)
|
||||||
var file_protocol_activity_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
var file_protocol_activity_pushcoin_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
|
||||||
var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{
|
var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{
|
||||||
(PushCoinPacketID)(0), // 0: activity.PushCoinPacketID
|
(PushCoinPacketID)(0), // 0: activity.PushCoinPacketID
|
||||||
(OpCodes)(0), // 1: activity.OpCodes
|
(OpCodes)(0), // 1: activity.OpCodes
|
||||||
|
|
@ -920,10 +869,9 @@ var file_protocol_activity_pushcoin_proto_goTypes = []interface{}{
|
||||||
(*ItemInfo)(nil), // 5: activity.ItemInfo
|
(*ItemInfo)(nil), // 5: activity.ItemInfo
|
||||||
(*ExchangeInfo)(nil), // 6: activity.ExchangeInfo
|
(*ExchangeInfo)(nil), // 6: activity.ExchangeInfo
|
||||||
(*DrawInfo)(nil), // 7: activity.DrawInfo
|
(*DrawInfo)(nil), // 7: activity.DrawInfo
|
||||||
(*NotifyDrawInfo)(nil), // 8: activity.NotifyDrawInfo
|
(*CSPushCoinPlayerOp)(nil), // 8: activity.CSPushCoinPlayerOp
|
||||||
(*CSPushCoinPlayerOp)(nil), // 9: activity.CSPushCoinPlayerOp
|
(*SCPushCoinPlayerOp)(nil), // 9: activity.SCPushCoinPlayerOp
|
||||||
(*SCPushCoinPlayerOp)(nil), // 10: activity.SCPushCoinPlayerOp
|
(*NotifyPowerLine)(nil), // 10: activity.NotifyPowerLine
|
||||||
(*NotifyPowerLine)(nil), // 11: activity.NotifyPowerLine
|
|
||||||
}
|
}
|
||||||
var file_protocol_activity_pushcoin_proto_depIdxs = []int32{
|
var file_protocol_activity_pushcoin_proto_depIdxs = []int32{
|
||||||
6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo
|
6, // 0: activity.SCPushCoinInfo.ExchangeList:type_name -> activity.ExchangeInfo
|
||||||
|
|
@ -931,18 +879,16 @@ var file_protocol_activity_pushcoin_proto_depIdxs = []int32{
|
||||||
5, // 2: activity.SCPushCoinInfo.Items:type_name -> activity.ItemInfo
|
5, // 2: activity.SCPushCoinInfo.Items:type_name -> activity.ItemInfo
|
||||||
5, // 3: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo
|
5, // 3: activity.ExchangeInfo.Cost:type_name -> activity.ItemInfo
|
||||||
5, // 4: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo
|
5, // 4: activity.ExchangeInfo.Gain:type_name -> activity.ItemInfo
|
||||||
7, // 5: activity.NotifyDrawInfo.Draw:type_name -> activity.DrawInfo
|
1, // 5: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes
|
||||||
7, // 6: activity.NotifyDrawInfo.Info:type_name -> activity.DrawInfo
|
5, // 6: activity.CSPushCoinPlayerOp.OpItem:type_name -> activity.ItemInfo
|
||||||
1, // 7: activity.CSPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes
|
2, // 7: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode
|
||||||
5, // 8: activity.CSPushCoinPlayerOp.OpItem:type_name -> activity.ItemInfo
|
1, // 8: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes
|
||||||
2, // 9: activity.SCPushCoinPlayerOp.OpRetCode:type_name -> activity.OpResultPushCoinCode
|
6, // 9: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo
|
||||||
1, // 10: activity.SCPushCoinPlayerOp.OpCode:type_name -> activity.OpCodes
|
10, // [10:10] is the sub-list for method output_type
|
||||||
6, // 11: activity.SCPushCoinPlayerOp.Exchange:type_name -> activity.ExchangeInfo
|
10, // [10:10] is the sub-list for method input_type
|
||||||
12, // [12:12] is the sub-list for method output_type
|
10, // [10:10] is the sub-list for extension type_name
|
||||||
12, // [12:12] is the sub-list for method input_type
|
10, // [10:10] is the sub-list for extension extendee
|
||||||
12, // [12:12] is the sub-list for extension type_name
|
0, // [0:10] is the sub-list for field type_name
|
||||||
12, // [12:12] is the sub-list for extension extendee
|
|
||||||
0, // [0:12] is the sub-list for field type_name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_protocol_activity_pushcoin_proto_init() }
|
func init() { file_protocol_activity_pushcoin_proto_init() }
|
||||||
|
|
@ -1012,18 +958,6 @@ func file_protocol_activity_pushcoin_proto_init() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_protocol_activity_pushcoin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
file_protocol_activity_pushcoin_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*NotifyDrawInfo); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_protocol_activity_pushcoin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*CSPushCoinPlayerOp); i {
|
switch v := v.(*CSPushCoinPlayerOp); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
|
@ -1035,7 +969,7 @@ func file_protocol_activity_pushcoin_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_protocol_activity_pushcoin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
file_protocol_activity_pushcoin_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*SCPushCoinPlayerOp); i {
|
switch v := v.(*SCPushCoinPlayerOp); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
|
@ -1047,7 +981,7 @@ func file_protocol_activity_pushcoin_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_protocol_activity_pushcoin_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
|
file_protocol_activity_pushcoin_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
|
||||||
switch v := v.(*NotifyPowerLine); i {
|
switch v := v.(*NotifyPowerLine); i {
|
||||||
case 0:
|
case 0:
|
||||||
return &v.state
|
return &v.state
|
||||||
|
|
@ -1066,7 +1000,7 @@ func file_protocol_activity_pushcoin_proto_init() {
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_protocol_activity_pushcoin_proto_rawDesc,
|
RawDescriptor: file_protocol_activity_pushcoin_proto_rawDesc,
|
||||||
NumEnums: 3,
|
NumEnums: 3,
|
||||||
NumMessages: 9,
|
NumMessages: 8,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -40,17 +40,13 @@ message ExchangeInfo{
|
||||||
int64 TotalTimes = 5; //总共兑换次数 -1无限
|
int64 TotalTimes = 5; //总共兑换次数 -1无限
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//抽奖信息
|
||||||
|
//PACKET_NotifyDrawInfo
|
||||||
message DrawInfo{
|
message DrawInfo{
|
||||||
int32 Id = 1; //抽奖id
|
int32 Id = 1; //抽奖id
|
||||||
int32 ItemId = 2; //道具id
|
int32 ItemId = 2; //道具id
|
||||||
int64 ItemNum = 3; //道具数量
|
int32 ItemNum = 3; //道具数量
|
||||||
}
|
int64 Coin = 4; //价值
|
||||||
|
|
||||||
//抽奖信息
|
|
||||||
//PACKET_NotifyDrawInfo
|
|
||||||
message NotifyDrawInfo {
|
|
||||||
DrawInfo Draw = 1; // 中奖信息
|
|
||||||
repeated DrawInfo Info = 2; // 刷新信息
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//玩家操作
|
//玩家操作
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ func (x *CashManiaPlayerData) GetVIP() int32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
//房间信息
|
//房间信息
|
||||||
//PACKET_CASHMANIA_SCCASHMANIAROOMINFO
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO
|
||||||
type SCCashManiaRoomInfo struct {
|
type SCCashManiaRoomInfo struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -337,7 +337,7 @@ func (x *SCCashManiaRoomInfo) GetPlayerInfo() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
//玩家操作
|
//玩家操作
|
||||||
//PACKET_CASHMANIA_CSCASHMANIAOP
|
//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP
|
||||||
type CSCashManiaOp struct {
|
type CSCashManiaOp struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -394,7 +394,7 @@ func (x *CSCashManiaOp) GetParams() []int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
//玩家操作返回
|
//玩家操作返回
|
||||||
//PACKET_CASHMANIA_SCCASHMANIAOP
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP
|
||||||
type SCCashManiaOp struct {
|
type SCCashManiaOp struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -459,7 +459,7 @@ func (x *SCCashManiaOp) GetParams() []int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
//房间状态
|
//房间状态
|
||||||
//PACKET_CASHMANIA_SCCASHMANIAROOMSTATE
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE
|
||||||
type SCCashManiaRoomState struct {
|
type SCCashManiaRoomState struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -523,7 +523,7 @@ func (x *SCCashManiaRoomState) GetParams() []int32 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//PACKET_CASHMANIA_SCCASHMANIABILLED
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED
|
||||||
type SCCashManiaBilled struct {
|
type SCCashManiaBilled struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ message CashManiaPlayerData {
|
||||||
int32 VIP = 11;
|
int32 VIP = 11;
|
||||||
}
|
}
|
||||||
//房间信息
|
//房间信息
|
||||||
//PACKET_CASHMANIA_SCCASHMANIAROOMINFO
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO
|
||||||
message SCCashManiaRoomInfo {
|
message SCCashManiaRoomInfo {
|
||||||
int32 RoomId = 1; //房间id
|
int32 RoomId = 1; //房间id
|
||||||
int32 GameFreeId = 2;
|
int32 GameFreeId = 2;
|
||||||
|
|
@ -42,26 +42,26 @@ message SCCashManiaRoomInfo {
|
||||||
string PlayerInfo = 11;
|
string PlayerInfo = 11;
|
||||||
}
|
}
|
||||||
//玩家操作
|
//玩家操作
|
||||||
//PACKET_CASHMANIA_CSCASHMANIAOP
|
//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP
|
||||||
message CSCashManiaOp {
|
message CSCashManiaOp {
|
||||||
int32 OpCode = 1; //操作码 0.spin
|
int32 OpCode = 1; //操作码 0.spin
|
||||||
repeated int64 Params = 2; //操作参数 下注索引编号
|
repeated int64 Params = 2; //操作参数 下注索引编号
|
||||||
}
|
}
|
||||||
//玩家操作返回
|
//玩家操作返回
|
||||||
//PACKET_CASHMANIA_SCCASHMANIAOP
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP
|
||||||
message SCCashManiaOp {
|
message SCCashManiaOp {
|
||||||
int32 OpCode = 1; //操作码
|
int32 OpCode = 1; //操作码
|
||||||
int32 OpRetCode = 2; //操作结果 1.金币不足 2.低于该值不能押注
|
int32 OpRetCode = 2; //操作结果 1.金币不足 2.低于该值不能押注
|
||||||
repeated int64 Params = 3; //操作参数
|
repeated int64 Params = 3; //操作参数
|
||||||
}
|
}
|
||||||
//房间状态
|
//房间状态
|
||||||
//PACKET_CASHMANIA_SCCASHMANIAROOMSTATE
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE
|
||||||
message SCCashManiaRoomState {
|
message SCCashManiaRoomState {
|
||||||
int32 State = 1; //房间当前状态
|
int32 State = 1; //房间当前状态
|
||||||
int32 SubState = 2; //房间当前子状态
|
int32 SubState = 2; //房间当前子状态
|
||||||
repeated int32 Params = 3; //状态参数
|
repeated int32 Params = 3; //状态参数
|
||||||
}
|
}
|
||||||
//PACKET_CASHMANIA_SCCASHMANIABILLED
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED
|
||||||
message SCCashManiaBilled{
|
message SCCashManiaBilled{
|
||||||
int32 OpRetCode = 1;//0.spin成功 1.spin失败
|
int32 OpRetCode = 1;//0.spin成功 1.spin失败
|
||||||
string GameEndStr = 2;
|
string GameEndStr = 2;
|
||||||
|
|
|
||||||
|
|
@ -208,7 +208,7 @@ func (x *GatesOfOlympusPlayerData) GetVIP() int32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
//房间信息
|
//房间信息
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMINFO
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO
|
||||||
type SCGatesOfOlympusRoomInfo struct {
|
type SCGatesOfOlympusRoomInfo struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -337,7 +337,7 @@ func (x *SCGatesOfOlympusRoomInfo) GetPlayerInfo() string {
|
||||||
}
|
}
|
||||||
|
|
||||||
//玩家操作
|
//玩家操作
|
||||||
//PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP
|
//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP
|
||||||
type CSGatesOfOlympusOp struct {
|
type CSGatesOfOlympusOp struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -394,7 +394,7 @@ func (x *CSGatesOfOlympusOp) GetParams() []int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
//玩家操作返回
|
//玩家操作返回
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSOP
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP
|
||||||
type SCGatesOfOlympusOp struct {
|
type SCGatesOfOlympusOp struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -459,7 +459,7 @@ func (x *SCGatesOfOlympusOp) GetParams() []int64 {
|
||||||
}
|
}
|
||||||
|
|
||||||
//房间状态
|
//房间状态
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMSTATE
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE
|
||||||
type SCGatesOfOlympusRoomState struct {
|
type SCGatesOfOlympusRoomState struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
@ -523,7 +523,7 @@ func (x *SCGatesOfOlympusRoomState) GetParams() []int32 {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED
|
||||||
type SCGatesOfOlympusBilled struct {
|
type SCGatesOfOlympusBilled struct {
|
||||||
state protoimpl.MessageState
|
state protoimpl.MessageState
|
||||||
sizeCache protoimpl.SizeCache
|
sizeCache protoimpl.SizeCache
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ message GatesOfOlympusPlayerData {
|
||||||
int32 VIP = 11;
|
int32 VIP = 11;
|
||||||
}
|
}
|
||||||
//房间信息
|
//房间信息
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMINFO
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMINFO
|
||||||
message SCGatesOfOlympusRoomInfo {
|
message SCGatesOfOlympusRoomInfo {
|
||||||
int32 RoomId = 1; //房间id
|
int32 RoomId = 1; //房间id
|
||||||
int32 GameFreeId = 2;
|
int32 GameFreeId = 2;
|
||||||
|
|
@ -42,26 +42,26 @@ message SCGatesOfOlympusRoomInfo {
|
||||||
string PlayerInfo = 11;
|
string PlayerInfo = 11;
|
||||||
}
|
}
|
||||||
//玩家操作
|
//玩家操作
|
||||||
//PACKET_GATESOFOLYMPUS_CSGATESOFOLYMPUSOP
|
//PACKET_FORTUNEMOUSE_CSFORTUNEMOUSEOP
|
||||||
message CSGatesOfOlympusOp {
|
message CSGatesOfOlympusOp {
|
||||||
int32 OpCode = 1; //操作码 0.spin
|
int32 OpCode = 1; //操作码 0.spin
|
||||||
repeated int64 Params = 2; //操作参数 下注索引编号
|
repeated int64 Params = 2; //操作参数 下注索引编号
|
||||||
}
|
}
|
||||||
//玩家操作返回
|
//玩家操作返回
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSOP
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEOP
|
||||||
message SCGatesOfOlympusOp {
|
message SCGatesOfOlympusOp {
|
||||||
int32 OpCode = 1; //操作码
|
int32 OpCode = 1; //操作码
|
||||||
int32 OpRetCode = 2; //操作结果 1.金币不足 2.低于该值不能押注
|
int32 OpRetCode = 2; //操作结果 1.金币不足 2.低于该值不能押注
|
||||||
repeated int64 Params = 3; //操作参数
|
repeated int64 Params = 3; //操作参数
|
||||||
}
|
}
|
||||||
//房间状态
|
//房间状态
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSROOMSTATE
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEROOMSTATE
|
||||||
message SCGatesOfOlympusRoomState {
|
message SCGatesOfOlympusRoomState {
|
||||||
int32 State = 1; //房间当前状态
|
int32 State = 1; //房间当前状态
|
||||||
int32 SubState = 2; //房间当前子状态
|
int32 SubState = 2; //房间当前子状态
|
||||||
repeated int32 Params = 3; //状态参数
|
repeated int32 Params = 3; //状态参数
|
||||||
}
|
}
|
||||||
//PACKET_GATESOFOLYMPUS_SCGATESOFOLYMPUSBILLED
|
//PACKET_FORTUNEMOUSE_SCFORTUNEMOUSEBILLED
|
||||||
message SCGatesOfOlympusBilled{
|
message SCGatesOfOlympusBilled{
|
||||||
int32 OpRetCode = 1;//0.spin成功 1.spin失败
|
int32 OpRetCode = 1;//0.spin成功 1.spin失败
|
||||||
string GameEndStr = 2;
|
string GameEndStr = 2;
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -13,6 +13,8 @@ message DB_ACTPushCoin {
|
||||||
|
|
||||||
map<int64, int64> Gain = 3;
|
map<int64, int64> Gain = 3;
|
||||||
|
|
||||||
|
int64 Value = 4;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
message DB_ACTPushCoinArray {
|
message DB_ACTPushCoinArray {
|
||||||
|
|
|
||||||
|
|
@ -10585,9 +10585,6 @@ type PushCoinConfig struct {
|
||||||
On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 1.开启 2.关闭
|
On int32 `protobuf:"varint,2,opt,name=On,proto3" json:"On,omitempty"` // 活动开关 1.开启 2.关闭
|
||||||
StartTime string `protobuf:"bytes,3,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 活动开始时间
|
StartTime string `protobuf:"bytes,3,opt,name=StartTime,proto3" json:"StartTime,omitempty"` // 活动开始时间
|
||||||
EndTime string `protobuf:"bytes,4,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 活动结束时间
|
EndTime string `protobuf:"bytes,4,opt,name=EndTime,proto3" json:"EndTime,omitempty"` // 活动结束时间
|
||||||
Pool1 *PushCoinPool `protobuf:"bytes,5,opt,name=Pool1,proto3" json:"Pool1,omitempty"` // 奖池1
|
|
||||||
Pool2 *PushCoinPool `protobuf:"bytes,6,opt,name=Pool2,proto3" json:"Pool2,omitempty"` // 奖池2
|
|
||||||
Pool3 *PushCoinPool `protobuf:"bytes,7,opt,name=Pool3,proto3" json:"Pool3,omitempty"` // 奖池3
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PushCoinConfig) Reset() {
|
func (x *PushCoinConfig) Reset() {
|
||||||
|
|
@ -10650,169 +10647,6 @@ func (x *PushCoinConfig) GetEndTime() string {
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
||||||
func (x *PushCoinConfig) GetPool1() *PushCoinPool {
|
|
||||||
if x != nil {
|
|
||||||
return x.Pool1
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinConfig) GetPool2() *PushCoinPool {
|
|
||||||
if x != nil {
|
|
||||||
return x.Pool2
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinConfig) GetPool3() *PushCoinPool {
|
|
||||||
if x != nil {
|
|
||||||
return x.Pool3
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type PushCoinPoolElement struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
On int32 `protobuf:"varint,1,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭
|
|
||||||
Tp int32 `protobuf:"varint,2,opt,name=Tp,proto3" json:"Tp,omitempty"` // 类型 1实物
|
|
||||||
Award []*ItemInfo `protobuf:"bytes,3,rep,name=Award,proto3" json:"Award,omitempty"` // 奖励
|
|
||||||
Weight int32 `protobuf:"varint,4,opt,name=Weight,proto3" json:"Weight,omitempty"` // 概率,万分比
|
|
||||||
Value int64 `protobuf:"varint,5,opt,name=Value,proto3" json:"Value,omitempty"` // 价值(只有实物有用)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) Reset() {
|
|
||||||
*x = PushCoinPoolElement{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_webapi_common_proto_msgTypes[115]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*PushCoinPoolElement) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_webapi_common_proto_msgTypes[115]
|
|
||||||
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 PushCoinPoolElement.ProtoReflect.Descriptor instead.
|
|
||||||
func (*PushCoinPoolElement) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_webapi_common_proto_rawDescGZIP(), []int{115}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) GetOn() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.On
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) GetTp() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Tp
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) GetAward() []*ItemInfo {
|
|
||||||
if x != nil {
|
|
||||||
return x.Award
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) GetWeight() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Weight
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPoolElement) GetValue() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Value
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
type PushCoinPool struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
On int32 `protobuf:"varint,1,opt,name=On,proto3" json:"On,omitempty"` // 开关 1开启 2关闭
|
|
||||||
Pool []*PushCoinPoolElement `protobuf:"bytes,2,rep,name=Pool,proto3" json:"Pool,omitempty"` // 奖池
|
|
||||||
UpperLimit int64 `protobuf:"varint,3,opt,name=UpperLimit,proto3" json:"UpperLimit,omitempty"` // 奖池上限(达到上线发奖)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPool) Reset() {
|
|
||||||
*x = PushCoinPool{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_protocol_webapi_common_proto_msgTypes[116]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPool) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*PushCoinPool) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *PushCoinPool) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_protocol_webapi_common_proto_msgTypes[116]
|
|
||||||
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 PushCoinPool.ProtoReflect.Descriptor instead.
|
|
||||||
func (*PushCoinPool) Descriptor() ([]byte, []int) {
|
|
||||||
return file_protocol_webapi_common_proto_rawDescGZIP(), []int{116}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPool) GetOn() int32 {
|
|
||||||
if x != nil {
|
|
||||||
return x.On
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPool) GetPool() []*PushCoinPoolElement {
|
|
||||||
if x != nil {
|
|
||||||
return x.Pool
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *PushCoinPool) GetUpperLimit() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.UpperLimit
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_protocol_webapi_common_proto protoreflect.FileDescriptor
|
var File_protocol_webapi_common_proto protoreflect.FileDescriptor
|
||||||
|
|
||||||
var file_protocol_webapi_common_proto_rawDesc = []byte{
|
var file_protocol_webapi_common_proto_rawDesc = []byte{
|
||||||
|
|
@ -12429,42 +12263,17 @@ var file_protocol_webapi_common_proto_rawDesc = []byte{
|
||||||
0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
|
0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20,
|
||||||
0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18,
|
0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18,
|
||||||
0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
|
0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
|
||||||
0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0xf8, 0x01, 0x0a, 0x0e, 0x50, 0x75, 0x73,
|
0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x74, 0x0a, 0x0e, 0x50, 0x75, 0x73, 0x68,
|
||||||
0x68, 0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50,
|
0x43, 0x6f, 0x69, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x50, 0x6c,
|
||||||
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50,
|
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x50, 0x6c,
|
||||||
0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20,
|
0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x02, 0x20, 0x01,
|
||||||
0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74,
|
0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54,
|
||||||
0x54, 0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72,
|
0x69, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x74, 0x61, 0x72, 0x74,
|
||||||
0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65,
|
0x54, 0x69, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x18,
|
||||||
0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12,
|
0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x45, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x42, 0x26,
|
||||||
0x2a, 0x0a, 0x05, 0x50, 0x6f, 0x6f, 0x6c, 0x31, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14,
|
0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2e, 0x63, 0x6f,
|
||||||
0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e,
|
0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f,
|
||||||
0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x50, 0x6f, 0x6f, 0x6c, 0x31, 0x12, 0x2a, 0x0a, 0x05, 0x50,
|
0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||||
0x6f, 0x6f, 0x6c, 0x32, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62,
|
|
||||||
0x61, 0x70, 0x69, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c,
|
|
||||||
0x52, 0x05, 0x50, 0x6f, 0x6f, 0x6c, 0x32, 0x12, 0x2a, 0x0a, 0x05, 0x50, 0x6f, 0x6f, 0x6c, 0x33,
|
|
||||||
0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e,
|
|
||||||
0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x50, 0x6f,
|
|
||||||
0x6f, 0x6c, 0x33, 0x22, 0x8b, 0x01, 0x0a, 0x13, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e,
|
|
||||||
0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x4f,
|
|
||||||
0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x54,
|
|
||||||
0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x54, 0x70, 0x12, 0x26, 0x0a, 0x05, 0x41,
|
|
||||||
0x77, 0x61, 0x72, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x77, 0x65, 0x62,
|
|
||||||
0x61, 0x70, 0x69, 0x2e, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x05, 0x41, 0x77,
|
|
||||||
0x61, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x04, 0x20,
|
|
||||||
0x01, 0x28, 0x05, 0x52, 0x06, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x56,
|
|
||||||
0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75,
|
|
||||||
0x65, 0x22, 0x6f, 0x0a, 0x0c, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69, 0x6e, 0x50, 0x6f, 0x6f,
|
|
||||||
0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x4f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x02, 0x4f,
|
|
||||||
0x6e, 0x12, 0x2f, 0x0a, 0x04, 0x50, 0x6f, 0x6f, 0x6c, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
|
|
||||||
0x1b, 0x2e, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x2e, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x69,
|
|
||||||
0x6e, 0x50, 0x6f, 0x6f, 0x6c, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x04, 0x50, 0x6f,
|
|
||||||
0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74,
|
|
||||||
0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0a, 0x55, 0x70, 0x70, 0x65, 0x72, 0x4c, 0x69, 0x6d,
|
|
||||||
0x69, 0x74, 0x42, 0x26, 0x5a, 0x24, 0x6d, 0x6f, 0x6e, 0x67, 0x6f, 0x2e, 0x67, 0x61, 0x6d, 0x65,
|
|
||||||
0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
|
||||||
0x63, 0x6f, 0x6c, 0x2f, 0x77, 0x65, 0x62, 0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74,
|
|
||||||
0x6f, 0x33,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|
@ -12479,7 +12288,7 @@ func file_protocol_webapi_common_proto_rawDescGZIP() []byte {
|
||||||
return file_protocol_webapi_common_proto_rawDescData
|
return file_protocol_webapi_common_proto_rawDescData
|
||||||
}
|
}
|
||||||
|
|
||||||
var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 127)
|
var file_protocol_webapi_common_proto_msgTypes = make([]protoimpl.MessageInfo, 125)
|
||||||
var file_protocol_webapi_common_proto_goTypes = []interface{}{
|
var file_protocol_webapi_common_proto_goTypes = []interface{}{
|
||||||
(*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting
|
(*MysqlDbSetting)(nil), // 0: webapi.MysqlDbSetting
|
||||||
(*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting
|
(*MongoDbSetting)(nil), // 1: webapi.MongoDbSetting
|
||||||
|
|
@ -12596,34 +12405,32 @@ var file_protocol_webapi_common_proto_goTypes = []interface{}{
|
||||||
(*RedInfo)(nil), // 112: webapi.RedInfo
|
(*RedInfo)(nil), // 112: webapi.RedInfo
|
||||||
(*ConsumeConfig)(nil), // 113: webapi.ConsumeConfig
|
(*ConsumeConfig)(nil), // 113: webapi.ConsumeConfig
|
||||||
(*PushCoinConfig)(nil), // 114: webapi.PushCoinConfig
|
(*PushCoinConfig)(nil), // 114: webapi.PushCoinConfig
|
||||||
(*PushCoinPoolElement)(nil), // 115: webapi.PushCoinPoolElement
|
nil, // 115: webapi.Platform.BindTelRewardEntry
|
||||||
(*PushCoinPool)(nil), // 116: webapi.PushCoinPool
|
nil, // 116: webapi.PlayerData.RankScoreEntry
|
||||||
nil, // 117: webapi.Platform.BindTelRewardEntry
|
nil, // 117: webapi.ItemShop.AwardEntry
|
||||||
nil, // 118: webapi.PlayerData.RankScoreEntry
|
nil, // 118: webapi.VIPcfg.AwardEntry
|
||||||
nil, // 119: webapi.ItemShop.AwardEntry
|
nil, // 119: webapi.VIPcfg.Privilege1Entry
|
||||||
nil, // 120: webapi.VIPcfg.AwardEntry
|
nil, // 120: webapi.VIPcfg.Privilege7Entry
|
||||||
nil, // 121: webapi.VIPcfg.Privilege1Entry
|
nil, // 121: webapi.VIPcfg.Privilege9Entry
|
||||||
nil, // 122: webapi.VIPcfg.Privilege7Entry
|
nil, // 122: webapi.ActInviteConfig.PayScoreEntry
|
||||||
nil, // 123: webapi.VIPcfg.Privilege9Entry
|
nil, // 123: webapi.SkinLevel.UpItemEntry
|
||||||
nil, // 124: webapi.ActInviteConfig.PayScoreEntry
|
nil, // 124: webapi.SkinItem.UnlockParamEntry
|
||||||
nil, // 125: webapi.SkinLevel.UpItemEntry
|
(*server.DB_GameFree)(nil), // 125: server.DB_GameFree
|
||||||
nil, // 126: webapi.SkinItem.UnlockParamEntry
|
(*server.DB_GameItem)(nil), // 126: server.DB_GameItem
|
||||||
(*server.DB_GameFree)(nil), // 127: server.DB_GameFree
|
|
||||||
(*server.DB_GameItem)(nil), // 128: server.DB_GameItem
|
|
||||||
}
|
}
|
||||||
var file_protocol_webapi_common_proto_depIdxs = []int32{
|
var file_protocol_webapi_common_proto_depIdxs = []int32{
|
||||||
2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch
|
2, // 0: webapi.Platform.Leaderboard:type_name -> webapi.RankSwitch
|
||||||
3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig
|
3, // 1: webapi.Platform.ClubConfig:type_name -> webapi.ClubConfig
|
||||||
4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame
|
4, // 2: webapi.Platform.ThirdGameMerchant:type_name -> webapi.ThirdGame
|
||||||
117, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry
|
115, // 3: webapi.Platform.BindTelReward:type_name -> webapi.Platform.BindTelRewardEntry
|
||||||
6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus
|
6, // 4: webapi.GameConfigGlobal.GameStatus:type_name -> webapi.GameStatus
|
||||||
127, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree
|
125, // 5: webapi.GameFree.DbGameFree:type_name -> server.DB_GameFree
|
||||||
8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree
|
8, // 6: webapi.PlatformGameConfig.DbGameFrees:type_name -> webapi.GameFree
|
||||||
0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting
|
0, // 7: webapi.PlatformDbConfig.Mysql:type_name -> webapi.MysqlDbSetting
|
||||||
1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting
|
1, // 8: webapi.PlatformDbConfig.MongoDb:type_name -> webapi.MongoDbSetting
|
||||||
1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting
|
1, // 9: webapi.PlatformDbConfig.MongoDbLog:type_name -> webapi.MongoDbSetting
|
||||||
127, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree
|
125, // 10: webapi.GameConfigGroup.DbGameFree:type_name -> server.DB_GameFree
|
||||||
118, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry
|
116, // 11: webapi.PlayerData.RankScore:type_name -> webapi.PlayerData.RankScoreEntry
|
||||||
32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo
|
32, // 12: webapi.PlayerData.Items:type_name -> webapi.ItemInfo
|
||||||
14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo
|
14, // 13: webapi.PlayerData.RoleUnlockList:type_name -> webapi.ModInfo
|
||||||
14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo
|
14, // 14: webapi.PlayerData.PetUnlockList:type_name -> webapi.ModInfo
|
||||||
|
|
@ -12636,7 +12443,7 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{
|
||||||
32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo
|
32, // 21: webapi.ExchangeShop.Items:type_name -> webapi.ItemInfo
|
||||||
25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop
|
25, // 22: webapi.ExchangeShopList.List:type_name -> webapi.ExchangeShop
|
||||||
29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight
|
29, // 23: webapi.ExchangeShopList.Weight:type_name -> webapi.ShopWeight
|
||||||
119, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry
|
117, // 24: webapi.ItemShop.Award:type_name -> webapi.ItemShop.AwardEntry
|
||||||
30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop
|
30, // 25: webapi.ItemShopList.List:type_name -> webapi.ItemShop
|
||||||
32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo
|
32, // 26: webapi.MatchInfoAward.ItemId:type_name -> webapi.ItemInfo
|
||||||
33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward
|
33, // 27: webapi.GameMatchDate.Award:type_name -> webapi.MatchInfoAward
|
||||||
|
|
@ -12657,14 +12464,14 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{
|
||||||
38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate
|
38, // 42: webapi.WelfareSpree.Item:type_name -> webapi.WelfareDate
|
||||||
48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree
|
48, // 43: webapi.WelfareFirstPayDataList.List:type_name -> webapi.WelfareSpree
|
||||||
48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree
|
48, // 44: webapi.WelfareContinuousPayDataList.List:type_name -> webapi.WelfareSpree
|
||||||
120, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry
|
118, // 45: webapi.VIPcfg.Award:type_name -> webapi.VIPcfg.AwardEntry
|
||||||
121, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry
|
119, // 46: webapi.VIPcfg.Privilege1:type_name -> webapi.VIPcfg.Privilege1Entry
|
||||||
122, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry
|
120, // 47: webapi.VIPcfg.Privilege7:type_name -> webapi.VIPcfg.Privilege7Entry
|
||||||
123, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry
|
121, // 48: webapi.VIPcfg.Privilege9:type_name -> webapi.VIPcfg.Privilege9Entry
|
||||||
51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg
|
51, // 49: webapi.VIPcfgDataList.List:type_name -> webapi.VIPcfg
|
||||||
38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate
|
38, // 50: webapi.ChessRankConfig.Item:type_name -> webapi.WelfareDate
|
||||||
55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig
|
55, // 51: webapi.ChessRankcfgData.Datas:type_name -> webapi.ChessRankConfig
|
||||||
124, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry
|
122, // 52: webapi.ActInviteConfig.PayScore:type_name -> webapi.ActInviteConfig.PayScoreEntry
|
||||||
62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward
|
62, // 53: webapi.ActInviteConfig.Awards1:type_name -> webapi.RankAward
|
||||||
62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward
|
62, // 54: webapi.ActInviteConfig.Awards2:type_name -> webapi.RankAward
|
||||||
62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward
|
62, // 55: webapi.ActInviteConfig.Awards3:type_name -> webapi.RankAward
|
||||||
|
|
@ -12681,12 +12488,12 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{
|
||||||
69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo
|
69, // 66: webapi.DiamondLotteryData.Info:type_name -> webapi.DiamondLotteryInfo
|
||||||
70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers
|
70, // 67: webapi.DiamondLotteryData.Players:type_name -> webapi.DiamondLotteryPlayers
|
||||||
72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData
|
72, // 68: webapi.DiamondLotteryConfig.LotteryData:type_name -> webapi.DiamondLotteryData
|
||||||
128, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem
|
126, // 69: webapi.ItemConfig.Items:type_name -> server.DB_GameItem
|
||||||
32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo
|
32, // 70: webapi.RankAwardInfo.Item:type_name -> webapi.ItemInfo
|
||||||
75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo
|
75, // 71: webapi.RankTypeInfo.Award:type_name -> webapi.RankAwardInfo
|
||||||
76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo
|
76, // 72: webapi.RankTypeConfig.Info:type_name -> webapi.RankTypeInfo
|
||||||
125, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry
|
123, // 73: webapi.SkinLevel.UpItem:type_name -> webapi.SkinLevel.UpItemEntry
|
||||||
126, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry
|
124, // 74: webapi.SkinItem.UnlockParam:type_name -> webapi.SkinItem.UnlockParamEntry
|
||||||
78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel
|
78, // 75: webapi.SkinItem.Levels:type_name -> webapi.SkinLevel
|
||||||
79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem
|
79, // 76: webapi.SkinConfig.Items:type_name -> webapi.SkinItem
|
||||||
82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData
|
82, // 77: webapi.AwardLogConfig.AwardLog:type_name -> webapi.AwardLogData
|
||||||
|
|
@ -12714,16 +12521,11 @@ var file_protocol_webapi_common_proto_depIdxs = []int32{
|
||||||
32, // 99: webapi.NianRankAwardInfo.Award:type_name -> webapi.ItemInfo
|
32, // 99: webapi.NianRankAwardInfo.Award:type_name -> webapi.ItemInfo
|
||||||
111, // 100: webapi.RedPacketConfig.List:type_name -> webapi.RedPacketInfo
|
111, // 100: webapi.RedPacketConfig.List:type_name -> webapi.RedPacketInfo
|
||||||
112, // 101: webapi.RedPacketInfo.RedList:type_name -> webapi.RedInfo
|
112, // 101: webapi.RedPacketInfo.RedList:type_name -> webapi.RedInfo
|
||||||
116, // 102: webapi.PushCoinConfig.Pool1:type_name -> webapi.PushCoinPool
|
102, // [102:102] is the sub-list for method output_type
|
||||||
116, // 103: webapi.PushCoinConfig.Pool2:type_name -> webapi.PushCoinPool
|
102, // [102:102] is the sub-list for method input_type
|
||||||
116, // 104: webapi.PushCoinConfig.Pool3:type_name -> webapi.PushCoinPool
|
102, // [102:102] is the sub-list for extension type_name
|
||||||
32, // 105: webapi.PushCoinPoolElement.Award:type_name -> webapi.ItemInfo
|
102, // [102:102] is the sub-list for extension extendee
|
||||||
115, // 106: webapi.PushCoinPool.Pool:type_name -> webapi.PushCoinPoolElement
|
0, // [0:102] is the sub-list for field type_name
|
||||||
107, // [107:107] is the sub-list for method output_type
|
|
||||||
107, // [107:107] is the sub-list for method input_type
|
|
||||||
107, // [107:107] is the sub-list for extension type_name
|
|
||||||
107, // [107:107] is the sub-list for extension extendee
|
|
||||||
0, // [0:107] is the sub-list for field type_name
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() { file_protocol_webapi_common_proto_init() }
|
func init() { file_protocol_webapi_common_proto_init() }
|
||||||
|
|
@ -14112,30 +13914,6 @@ func file_protocol_webapi_common_proto_init() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
file_protocol_webapi_common_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*PushCoinPoolElement); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_protocol_webapi_common_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*PushCoinPool); 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{
|
||||||
|
|
@ -14143,7 +13921,7 @@ func file_protocol_webapi_common_proto_init() {
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||||
RawDescriptor: file_protocol_webapi_common_proto_rawDesc,
|
RawDescriptor: file_protocol_webapi_common_proto_rawDesc,
|
||||||
NumEnums: 0,
|
NumEnums: 0,
|
||||||
NumMessages: 127,
|
NumMessages: 125,
|
||||||
NumExtensions: 0,
|
NumExtensions: 0,
|
||||||
NumServices: 0,
|
NumServices: 0,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1174,21 +1174,4 @@ message PushCoinConfig{
|
||||||
int32 On = 2; // 活动开关 1.开启 2.关闭
|
int32 On = 2; // 活动开关 1.开启 2.关闭
|
||||||
string StartTime = 3; // 活动开始时间
|
string StartTime = 3; // 活动开始时间
|
||||||
string EndTime = 4; // 活动结束时间
|
string EndTime = 4; // 活动结束时间
|
||||||
PushCoinPool Pool1 = 5; // 奖池1
|
|
||||||
PushCoinPool Pool2 = 6; // 奖池2
|
|
||||||
PushCoinPool Pool3 = 7; // 奖池3
|
|
||||||
}
|
|
||||||
|
|
||||||
message PushCoinPoolElement{
|
|
||||||
int32 On = 1; // 开关 1开启 2关闭
|
|
||||||
int32 Tp = 2; // 类型 1实物
|
|
||||||
repeated ItemInfo Award = 3; // 奖励
|
|
||||||
int32 Weight = 4; // 概率,万分比
|
|
||||||
int64 Value = 5; // 价值(只有实物有用)
|
|
||||||
}
|
|
||||||
|
|
||||||
message PushCoinPool{
|
|
||||||
int32 On = 1; // 开关 1开启 2关闭
|
|
||||||
repeated PushCoinPoolElement Pool = 2; // 奖池
|
|
||||||
int64 UpperLimit = 3; // 奖池上限(达到上线发奖)
|
|
||||||
}
|
}
|
||||||
|
|
@ -5,7 +5,6 @@ import (
|
||||||
"encoding/hex"
|
"encoding/hex"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"mongo.games.com/game/mq"
|
|
||||||
"strconv"
|
"strconv"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
|
@ -62,14 +61,6 @@ func (this *CSLoginHandler) Process(s *netlib.Session, packetid int, data interf
|
||||||
}
|
}
|
||||||
proto.SetDefaults(sclogin)
|
proto.SetDefaults(sclogin)
|
||||||
common.SendToGate(sid, int(login_proto.LoginPacketID_PACKET_SC_LOGIN), sclogin, s)
|
common.SendToGate(sid, int(login_proto.LoginPacketID_PACKET_SC_LOGIN), sclogin, s)
|
||||||
logger.Logger.Trace("CSLoginHandler Process send ", sclogin)
|
|
||||||
if code != login_proto.OpResultCode_OPRC_Sucess {
|
|
||||||
log := &model.LoginErrorLog{
|
|
||||||
TypeId: int32(code.Enum().Number()),
|
|
||||||
Ts: time.Now().Unix(),
|
|
||||||
}
|
|
||||||
mq.Write(log)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sendSCDisconnect := func(code int32) {
|
sendSCDisconnect := func(code int32) {
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"slices"
|
|
||||||
"sort"
|
"sort"
|
||||||
"time"
|
|
||||||
|
|
||||||
"mongo.games.com/goserver/core/logger"
|
"mongo.games.com/goserver/core/logger"
|
||||||
"mongo.games.com/goserver/core/netlib"
|
"mongo.games.com/goserver/core/netlib"
|
||||||
|
|
@ -11,7 +9,6 @@ import (
|
||||||
"mongo.games.com/game/common"
|
"mongo.games.com/game/common"
|
||||||
"mongo.games.com/game/model"
|
"mongo.games.com/game/model"
|
||||||
"mongo.games.com/game/protocol/activity"
|
"mongo.games.com/game/protocol/activity"
|
||||||
"mongo.games.com/game/protocol/webapi"
|
|
||||||
"mongo.games.com/game/srvdata"
|
"mongo.games.com/game/srvdata"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -24,6 +21,7 @@ var PushCoinItemValue = map[int32]int64{
|
||||||
common.ItemIDBigCoin: 50000,
|
common.ItemIDBigCoin: 50000,
|
||||||
common.ItemIDVCard: 10000,
|
common.ItemIDVCard: 10000,
|
||||||
common.ItemIDPlum: 30000,
|
common.ItemIDPlum: 30000,
|
||||||
|
30011: 100000000, // 话费卡
|
||||||
common.ItemIDCoin1: 5000,
|
common.ItemIDCoin1: 5000,
|
||||||
common.ItemIDCoin2: 10000,
|
common.ItemIDCoin2: 10000,
|
||||||
common.ItemIDCoin3: 15000,
|
common.ItemIDCoin3: 15000,
|
||||||
|
|
@ -54,7 +52,7 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.WelfData.PushCoin == nil || len(p.WelfData.PushCoin.Turn) == 0 {
|
if p.WelfData.PushCoin == nil {
|
||||||
InitPlayerPushCoin(p)
|
InitPlayerPushCoin(p)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -107,73 +105,15 @@ func CSPushCoinInfo(s *netlib.Session, packetid int, data interface{}, sid int64
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pack.DrawList = make([]*activity.DrawInfo, len(p.WelfData.PushCoin.Turn))
|
// 转盘
|
||||||
|
for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr {
|
||||||
for k, v := range p.WelfData.PushCoin.Turn {
|
for kk, vv := range v.GetGain() {
|
||||||
info := &activity.DrawInfo{
|
pack.DrawList = append(pack.DrawList, &activity.DrawInfo{
|
||||||
Id: int32(k),
|
Id: v.GetId(),
|
||||||
}
|
ItemId: int32(kk),
|
||||||
|
ItemNum: int32(vv),
|
||||||
// 默认奖励
|
Coin: v.GetValue(),
|
||||||
if slices.Contains(NormaIndex, k) {
|
})
|
||||||
d := srvdata.PBDB_ACTPushCoinMgr.GetData(v)
|
|
||||||
if d != nil {
|
|
||||||
for kk, vv := range d.GetGain() {
|
|
||||||
info.ItemId = int32(kk)
|
|
||||||
info.ItemNum = vv
|
|
||||||
break
|
|
||||||
}
|
|
||||||
pack.DrawList[k] = info
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
// 奖池
|
|
||||||
if slices.Contains(PoolIndex, k) {
|
|
||||||
ii := slices.Index(PoolIndex, k)
|
|
||||||
if v == -1 {
|
|
||||||
// 从奖池中随机
|
|
||||||
var element *webapi.PushCoinPoolElement
|
|
||||||
var index int32
|
|
||||||
cfg := WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig
|
|
||||||
if ii == 0 {
|
|
||||||
element, index = PushCoinPoolRandom(cfg.GetPool1().GetPool())
|
|
||||||
} else if ii == 1 {
|
|
||||||
element, index = PushCoinPoolRandom(cfg.GetPool2().GetPool())
|
|
||||||
} else if ii == 2 {
|
|
||||||
element, index = PushCoinPoolRandom(cfg.GetPool3().GetPool())
|
|
||||||
}
|
|
||||||
if index >= 0 && element != nil {
|
|
||||||
p.WelfData.PushCoin.Turn[k] = index
|
|
||||||
for _, v := range element.GetAward() {
|
|
||||||
info.ItemId = v.GetItemId()
|
|
||||||
info.ItemNum = v.GetItemNum()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
pack.DrawList[k] = info
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// 随机过了
|
|
||||||
f := func(index int, pool []*webapi.PushCoinPoolElement) {
|
|
||||||
if index < len(pool) {
|
|
||||||
for _, v := range pool[index].GetAward() {
|
|
||||||
info.ItemId = v.GetItemId()
|
|
||||||
info.ItemNum = v.GetItemNum()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
pack.DrawList[k] = info
|
|
||||||
}
|
|
||||||
}
|
|
||||||
cfg := WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig
|
|
||||||
if cfg != nil {
|
|
||||||
if ii == 0 {
|
|
||||||
f(int(v), cfg.GetPool1().GetPool())
|
|
||||||
} else if ii == 1 {
|
|
||||||
f(int(v), cfg.GetPool2().GetPool())
|
|
||||||
} else if ii == 2 {
|
|
||||||
f(int(v), cfg.GetPool3().GetPool())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -210,18 +150,6 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// 活动时间检测
|
|
||||||
now := time.Now()
|
|
||||||
cfg := WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig
|
|
||||||
if cfg == nil {
|
|
||||||
logger.Logger.Warn("CSPushCoinPlayerOp cfg == nil")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
if cfg.GetOn() != common.On || now.Unix() < common.StrTimeToTs(cfg.GetStartTime()) || now.Unix() >= common.StrTimeToTs(cfg.GetEndTime()) {
|
|
||||||
logger.Logger.Warn("CSPushCoinPlayerOp cfg.GetOn() == common.Off or end")
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
pack := &activity.SCPushCoinPlayerOp{
|
pack := &activity.SCPushCoinPlayerOp{
|
||||||
OpRetCode: activity.OpResultPushCoinCode_OPRC_PushCoin_Error,
|
OpRetCode: activity.OpResultPushCoinCode_OPRC_PushCoin_Error,
|
||||||
OpCode: msg.GetOpCode(),
|
OpCode: msg.GetOpCode(),
|
||||||
|
|
@ -249,8 +177,6 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i
|
||||||
PushCoinAddValue(p, map[int32]int64{
|
PushCoinAddValue(p, map[int32]int64{
|
||||||
int32(msg.GetOpParam()): 1,
|
int32(msg.GetOpParam()): 1,
|
||||||
})
|
})
|
||||||
// 增加水池
|
|
||||||
PushCoinPoolMangerInstance.Add(p.Platform, item.GetNum())
|
|
||||||
|
|
||||||
case activity.OpCodes_OP_Gain:
|
case activity.OpCodes_OP_Gain:
|
||||||
|
|
||||||
|
|
@ -284,26 +210,12 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// 无效区
|
// 无效区
|
||||||
for _, v := range msg.GetOpItem() {
|
|
||||||
id := v.GetItemId()
|
|
||||||
val := v.GetItemNum()
|
|
||||||
|
|
||||||
if p.WelfData.PushCoin.Items[id] < val {
|
|
||||||
logger.Logger.Errorf("获得道具太多,无效区: %d, %d", p.WelfData.PushCoin.Items[id], val)
|
|
||||||
goto here
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, v := range msg.GetOpItem() {
|
for _, v := range msg.GetOpItem() {
|
||||||
// 增加能量条
|
// 增加能量条
|
||||||
val := GetPushCoinValue(p.Platform, v.GetItemId())
|
PushCoinAddPower(p, PushCoinItemValue[v.GetItemId()]*v.GetItemNum())
|
||||||
if val <= 0 {
|
|
||||||
logger.Logger.Errorf("推币机价值查询bug itemId:%v", v.GetItemId())
|
|
||||||
}
|
|
||||||
logger.Logger.Debugf("推币机,掉落 ItemId:%v ItemNum:%v Value:%v", v.GetItemId(), v.GetItemNum(), val)
|
|
||||||
PushCoinAddPower(p, val*v.GetItemNum())
|
|
||||||
|
|
||||||
// 减少桌面道具
|
// 减少桌面道具
|
||||||
PushCoinAddValue(p, map[int32]int64{v.GetItemId(): -v.GetItemNum()})
|
PushCoinAddValue(p, map[int32]int64{v.GetItemId(): -v.GetItemNum()})
|
||||||
}
|
}
|
||||||
|
|
@ -373,17 +285,13 @@ func CSPushCoinPlayerOp(s *netlib.Session, packetid int, data interface{}, sid i
|
||||||
})
|
})
|
||||||
if k == common.ItemIDShake {
|
if k == common.ItemIDShake {
|
||||||
p.WelfData.PushCoin.Shake += int32(v)
|
p.WelfData.PushCoin.Shake += int32(v)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
gain = append(gain, &model.Item{
|
gain = append(gain, &model.Item{
|
||||||
ItemId: int32(k),
|
ItemId: int32(k),
|
||||||
ItemNum: v,
|
ItemNum: v,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
for _, v := range cost {
|
|
||||||
if v.ItemNum < 0 {
|
|
||||||
v.ItemNum = -v.ItemNum
|
|
||||||
}
|
|
||||||
}
|
|
||||||
BagMgrSingleton.AddItems(&model.AddItemParam{
|
BagMgrSingleton.AddItems(&model.AddItemParam{
|
||||||
Platform: p.Platform,
|
Platform: p.Platform,
|
||||||
SnId: p.SnId,
|
SnId: p.SnId,
|
||||||
|
|
@ -422,13 +330,6 @@ func InitPlayerPushCoin(p *Player) {
|
||||||
common.ItemIDCoin1: 50,
|
common.ItemIDCoin1: 50,
|
||||||
common.ItemIDPlum: 1,
|
common.ItemIDPlum: 1,
|
||||||
},
|
},
|
||||||
Turn: []int32{ // 转盘表数据id
|
|
||||||
1, 4, -1,
|
|
||||||
3, -1, 2,
|
|
||||||
-1, 5, 9,
|
|
||||||
},
|
|
||||||
Next: -1,
|
|
||||||
PoolV: []int64{-1, -1, -1},
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -441,14 +342,10 @@ func PushCoinAddPower(p *Player, value int64) {
|
||||||
if p.WelfData.PushCoin.Power > PowerMax {
|
if p.WelfData.PushCoin.Power > PowerMax {
|
||||||
p.WelfData.PushCoin.Power = PowerMax
|
p.WelfData.PushCoin.Power = PowerMax
|
||||||
}
|
}
|
||||||
|
p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyPowerLine), &activity.NotifyPowerLine{
|
||||||
pack := &activity.NotifyPowerLine{
|
|
||||||
PowerLine: p.WelfData.PushCoin.Power,
|
PowerLine: p.WelfData.PushCoin.Power,
|
||||||
PowerLineMax: PowerMax,
|
PowerLineMax: PowerMax,
|
||||||
}
|
})
|
||||||
|
|
||||||
p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyPowerLine), pack)
|
|
||||||
logger.Logger.Tracef("刷新能量条: %v", pack)
|
|
||||||
if value <= 0 {
|
if value <= 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
@ -462,197 +359,62 @@ func PushCoinDraw(p *Player) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
p.WelfData.PushCoin.Power = 0
|
p.WelfData.PushCoin.Power = 0
|
||||||
|
var index int32 = -1
|
||||||
var draw *activity.DrawInfo
|
|
||||||
var draw1 []*activity.DrawInfo
|
|
||||||
// 奖池返奖
|
|
||||||
f1 := func() bool {
|
|
||||||
pool := PushCoinPoolMangerInstance.PlatformConfig[p.Platform]
|
|
||||||
if pool == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// fp 奖池返奖,返回是否成功
|
|
||||||
fp := func(i int, poolInfo *PushCoinPoolInfo) bool {
|
|
||||||
// 是否返奖
|
|
||||||
if poolInfo == nil || poolInfo.Remain <= 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
// 玩家奖池没有返过奖
|
|
||||||
if len(p.WelfData.PushCoin.PoolV) > i && p.WelfData.PushCoin.PoolV[i] < poolInfo.Version {
|
|
||||||
cfg := WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig
|
|
||||||
poolIndex := p.WelfData.PushCoin.Turn[PoolIndex[i]]
|
|
||||||
value := int64(0) // 奖品价值
|
|
||||||
if int(poolIndex) < len(cfg.GetPool1().GetPool()) {
|
|
||||||
e := cfg.GetPool1().GetPool()[poolIndex]
|
|
||||||
if e != nil {
|
|
||||||
for _, v := range e.GetAward() {
|
|
||||||
iv, ok := PushCoinItemValue[v.GetItemId()]
|
|
||||||
if ok {
|
|
||||||
value = v.GetItemNum() * iv
|
|
||||||
} else {
|
|
||||||
value = v.GetItemNum() * e.GetValue() // 目前只有实物是自定义的价值
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if value > 0 {
|
|
||||||
// 价值是否足够
|
|
||||||
if poolInfo.Remain-value < 0 {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
// 扣除价值
|
|
||||||
poolInfo.Remain -= value
|
|
||||||
// 刷新玩家奖池版本
|
|
||||||
p.WelfData.PushCoin.PoolV[i] = poolInfo.Version
|
|
||||||
// 下次中奖位置
|
|
||||||
p.WelfData.PushCoin.Next = int32(PoolIndex[i])
|
|
||||||
logger.Logger.Tracef("下次中奖池:%v", p.WelfData.PushCoin)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
// 奖池1
|
|
||||||
if fp(0, pool.Pool1) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
// 奖池2
|
|
||||||
if fp(1, pool.Pool2) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
// 奖池3
|
|
||||||
if fp(2, pool.Pool3) {
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
switch p.WelfData.PushCoin.Dram {
|
switch p.WelfData.PushCoin.Dram {
|
||||||
case 0:
|
case 0:
|
||||||
// 必中大金币
|
// 必中大金币
|
||||||
draw = PushCoinNormalRandom(common.ItemIDBigCoin)
|
for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr {
|
||||||
draw.Id = 0 // 查表
|
for kk := range v.GetGain() {
|
||||||
// 下次必中v卡
|
if kk == common.ItemIDBigCoin {
|
||||||
p.WelfData.PushCoin.Next = 5 // 查表
|
index = v.GetId()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
case 1:
|
||||||
|
// 必中v卡
|
||||||
|
for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr {
|
||||||
|
for kk := range v.GetGain() {
|
||||||
|
if kk == common.ItemIDVCard {
|
||||||
|
index = v.GetId()
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// 使用预生成结果
|
var n int32
|
||||||
if p.WelfData.PushCoin.Next >= 0 {
|
rand := common.RandInt(10000)
|
||||||
k := p.WelfData.PushCoin.Next
|
for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.Arr {
|
||||||
val := p.WelfData.PushCoin.Turn[p.WelfData.PushCoin.Next]
|
if rand < int(n+v.GetRate()) {
|
||||||
if slices.Contains(NormaIndex, int(k)) {
|
index = v.GetId()
|
||||||
// 普通奖品
|
|
||||||
for kk, vv := range srvdata.PBDB_ACTPushCoinMgr.GetData(val).GetGain() {
|
|
||||||
draw = &activity.DrawInfo{
|
|
||||||
Id: k,
|
|
||||||
ItemId: int32(kk),
|
|
||||||
ItemNum: vv,
|
|
||||||
}
|
|
||||||
logger.Logger.Tracef("中奖普通奖品:%v", draw)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if slices.Contains(PoolIndex, int(k)) {
|
|
||||||
f := func(i int, list []*webapi.PushCoinPoolElement) {
|
|
||||||
// 本次奖品
|
|
||||||
if i < len(list) {
|
|
||||||
for _, v := range list[i].GetAward() {
|
|
||||||
draw = &activity.DrawInfo{
|
|
||||||
Id: p.WelfData.PushCoin.Next,
|
|
||||||
ItemId: v.GetItemId(),
|
|
||||||
ItemNum: v.GetItemNum(),
|
|
||||||
}
|
|
||||||
logger.Logger.Tracef("中奖奖池奖品:%v", draw)
|
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
} else {
|
n += v.GetRate()
|
||||||
logger.Logger.Errorf("奖池抽奖bug: %d, %d, %d", k, i, len(list))
|
|
||||||
}
|
|
||||||
// 刷新奖池
|
|
||||||
e, index := PushCoinPoolRandom(list)
|
|
||||||
if e != nil {
|
|
||||||
p.WelfData.PushCoin.Turn[k] = index
|
|
||||||
for _, v := range e.GetAward() {
|
|
||||||
draw1 = append(draw1, &activity.DrawInfo{
|
|
||||||
Id: k,
|
|
||||||
ItemId: v.GetItemId(),
|
|
||||||
ItemNum: v.GetItemNum(),
|
|
||||||
})
|
|
||||||
logger.Logger.Tracef("刷新奖池奖品:%v", draw)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
logger.Logger.Errorf("奖池刷新bug: %d, %d, %d", k, i, len(list))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 水池奖品
|
|
||||||
var poolElements []*webapi.PushCoinPoolElement
|
|
||||||
switch slices.Index(PoolIndex, int(k)) {
|
|
||||||
case 0:
|
|
||||||
poolElements = WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig.GetPool1().GetPool()
|
|
||||||
case 1:
|
|
||||||
poolElements = WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig.GetPool2().GetPool()
|
|
||||||
case 2:
|
|
||||||
poolElements = WelfareMgrSington.GetConfig(p.Platform).PushCoinConfig.GetPool3().GetPool()
|
|
||||||
}
|
|
||||||
f(int(val), poolElements)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// 下次中奖位置
|
|
||||||
// 奖池返奖 或 普通抽奖
|
|
||||||
if !f1() {
|
|
||||||
// 普通抽奖
|
|
||||||
index := int(p.WelfData.PushCoin.Next) // 奖品位置
|
|
||||||
e := PushCoinNormalRandom(0)
|
|
||||||
if e != nil {
|
|
||||||
var has bool
|
|
||||||
for k, v := range p.WelfData.PushCoin.Turn {
|
|
||||||
if slices.Contains(NormaIndex, k) && v == e.GetId() {
|
|
||||||
has = true
|
|
||||||
index = k
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if !has {
|
|
||||||
// 替换
|
|
||||||
if slices.Contains(PoolIndex, index) {
|
|
||||||
// 找一个普通奖品位置
|
|
||||||
index = NormaIndex[common.RandInt(len(NormaIndex[:len(NormaIndex)-1]))]
|
|
||||||
}
|
|
||||||
draw1 = append(draw1, &activity.DrawInfo{
|
|
||||||
Id: int32(index),
|
|
||||||
ItemId: e.GetItemId(),
|
|
||||||
ItemNum: e.GetItemNum(),
|
|
||||||
})
|
|
||||||
p.WelfData.PushCoin.Turn[index] = e.GetId()
|
|
||||||
}
|
|
||||||
p.WelfData.PushCoin.Next = int32(index)
|
|
||||||
logger.Logger.Tracef("下次中普通奖品:index:%v ItemId:%v Num:%v", index, e.GetItemId(), e.GetItemNum())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
p.WelfData.PushCoin.Dram++
|
p.WelfData.PushCoin.Dram++
|
||||||
|
|
||||||
if draw != nil {
|
if index >= 0 {
|
||||||
pack := &activity.NotifyDrawInfo{
|
d := srvdata.PBDB_ACTPushCoinMgr.GetData(index)
|
||||||
Draw: draw,
|
if d != nil {
|
||||||
|
pack := &activity.DrawInfo{
|
||||||
|
Id: d.GetId(),
|
||||||
|
Coin: d.GetValue(),
|
||||||
}
|
}
|
||||||
if len(draw1) > 0 {
|
for k, v := range d.GetGain() {
|
||||||
pack.Info = draw1
|
pack.ItemId = int32(k)
|
||||||
|
pack.ItemNum = int32(v)
|
||||||
|
PushCoinAddValue(p, map[int32]int64{pack.ItemId: int64(pack.ItemNum)})
|
||||||
}
|
}
|
||||||
|
if pack.Coin > 0 || pack.ItemId > 0 {
|
||||||
PushCoinAddValue(p, map[int32]int64{draw.GetItemId(): draw.GetItemNum()})
|
|
||||||
|
|
||||||
p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack)
|
p.SendToClient(int(activity.PushCoinPacketID_PACKET_NotifyDrawInfo), pack)
|
||||||
logger.Logger.Trace("NotifyDrawInfo: ", pack)
|
// 增加能量条
|
||||||
|
|
||||||
// 刷新能量条
|
|
||||||
PushCoinAddPower(p, 0)
|
PushCoinAddPower(p, 0)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// PushCoinAddValue 增加桌面道具
|
// PushCoinAddValue 增加桌面道具
|
||||||
|
|
@ -665,111 +427,12 @@ func PushCoinAddValue(p *Player, item map[int32]int64) {
|
||||||
p.WelfData.PushCoin.Items = make(map[int32]int64)
|
p.WelfData.PushCoin.Items = make(map[int32]int64)
|
||||||
}
|
}
|
||||||
for k, v := range item {
|
for k, v := range item {
|
||||||
|
if v > 0 {
|
||||||
|
switch k {
|
||||||
|
default:
|
||||||
p.WelfData.PushCoin.Items[k] += v
|
p.WelfData.PushCoin.Items[k] += v
|
||||||
logger.Logger.Tracef("桌面数据 ItemId:%v Change:%v Num:%v", k, v, p.WelfData.PushCoin.Items[k])
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func PushCoinPoolRandom(pool []*webapi.PushCoinPoolElement) (*webapi.PushCoinPoolElement, int32) {
|
|
||||||
var total int32
|
|
||||||
for _, v := range pool {
|
|
||||||
if v.GetOn() == common.On {
|
|
||||||
total += v.GetWeight()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if total <= 0 {
|
|
||||||
return nil, -1
|
|
||||||
}
|
|
||||||
var n int32
|
|
||||||
rn := int32(common.RandInt(int(total)))
|
|
||||||
for k, v := range pool {
|
|
||||||
if v.GetOn() == common.On {
|
|
||||||
n += v.GetWeight()
|
|
||||||
if rn < n {
|
|
||||||
return v, int32(k)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil, -1
|
|
||||||
}
|
|
||||||
|
|
||||||
func PushCoinNormalRandom(itemId int64) *activity.DrawInfo {
|
|
||||||
var total int32
|
|
||||||
var index = int32(-1) // 随机id
|
|
||||||
var n int32
|
|
||||||
if itemId == 0 {
|
|
||||||
// 随机抽奖
|
|
||||||
for _, vv := range srvdata.PBDB_ACTPushCoinMgr.Datas.GetArr() {
|
|
||||||
total += vv.GetRate()
|
|
||||||
}
|
|
||||||
|
|
||||||
rn := int32(common.RandInt(int(total)))
|
|
||||||
for _, vv := range srvdata.PBDB_ACTPushCoinMgr.Datas.GetArr() {
|
|
||||||
n += vv.GetRate()
|
|
||||||
if rn < n {
|
|
||||||
index = vv.GetId()
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if index >= 0 {
|
|
||||||
for kk, vv := range srvdata.PBDB_ACTPushCoinMgr.GetData(index).GetGain() {
|
|
||||||
draw := &activity.DrawInfo{
|
|
||||||
Id: index,
|
|
||||||
ItemId: int32(kk),
|
|
||||||
ItemNum: vv,
|
|
||||||
}
|
|
||||||
return draw
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
// 前两次必中
|
|
||||||
for _, v := range srvdata.PBDB_ACTPushCoinMgr.Datas.GetArr() {
|
|
||||||
for kk, vv := range v.GetGain() {
|
|
||||||
if kk == itemId {
|
|
||||||
draw := &activity.DrawInfo{
|
|
||||||
ItemId: int32(kk),
|
|
||||||
ItemNum: vv,
|
|
||||||
}
|
|
||||||
return draw
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// GetPushCoinValue 查询物品价值,没有的是后台配置的价值
|
|
||||||
func GetPushCoinValue(plt string, itemId int32) int64 {
|
|
||||||
val, ok := PushCoinItemValue[itemId]
|
|
||||||
if ok {
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
cfg := WelfareMgrSington.GetConfig(plt).PushCoinConfig
|
|
||||||
if cfg != nil {
|
|
||||||
f := func(list []*webapi.PushCoinPoolElement) bool {
|
|
||||||
for _, vv := range list {
|
|
||||||
for _, vvv := range vv.GetAward() {
|
|
||||||
if vvv.GetItemId() == itemId {
|
|
||||||
val = vv.GetValue()
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
for {
|
|
||||||
if f(cfg.GetPool1().GetPool()) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if f(cfg.GetPool2().GetPool()) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
if f(cfg.GetPool3().GetPool()) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return val
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -1,91 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"mongo.games.com/game/common"
|
|
||||||
"mongo.games.com/game/protocol/webapi"
|
|
||||||
"mongo.games.com/goserver/core/logger"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"mongo.games.com/goserver/core/module"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
NormaIndex = []int{0, 1, 3, 5, 7, 8} // 普通奖位置
|
|
||||||
PoolIndex = []int{2, 4, 6} // 水池位置
|
|
||||||
)
|
|
||||||
|
|
||||||
var PushCoinPoolMangerInstance = &PushCoinPoolManager{
|
|
||||||
PlatformConfig: map[string]*PushCoinPool{},
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
module.RegisteModule(PushCoinPoolMangerInstance, time.Hour, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
type PushCoinPool struct {
|
|
||||||
Pool1 *PushCoinPoolInfo
|
|
||||||
Pool2 *PushCoinPoolInfo
|
|
||||||
Pool3 *PushCoinPoolInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
type PushCoinPoolInfo struct {
|
|
||||||
CurCoin int64 // 当前金币
|
|
||||||
Remain int64 // 剩余金币
|
|
||||||
Version int64 // 版本号, 达到上限后更新
|
|
||||||
}
|
|
||||||
|
|
||||||
type PushCoinPoolManager struct {
|
|
||||||
PlatformConfig map[string]*PushCoinPool
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PushCoinPoolManager) ModuleName() string {
|
|
||||||
return "PushCoinPoolManager"
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PushCoinPoolManager) Init() {
|
|
||||||
// 加载水池
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PushCoinPoolManager) Update() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PushCoinPoolManager) Shutdown() {
|
|
||||||
// 保存水池
|
|
||||||
module.UnregisteModule(p)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *PushCoinPoolManager) Add(platform string, val int64) {
|
|
||||||
cfg, ok := p.PlatformConfig[platform]
|
|
||||||
if !ok {
|
|
||||||
cfg = &PushCoinPool{
|
|
||||||
Pool1: &PushCoinPoolInfo{},
|
|
||||||
Pool2: &PushCoinPoolInfo{},
|
|
||||||
Pool3: &PushCoinPoolInfo{},
|
|
||||||
}
|
|
||||||
p.PlatformConfig[platform] = cfg
|
|
||||||
}
|
|
||||||
|
|
||||||
conf := WelfareMgrSington.GetConfig(platform).PushCoinConfig
|
|
||||||
if conf.GetOn() != common.On {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
f := func(i int, poolInfo *PushCoinPoolInfo, pool *webapi.PushCoinPool, rate float64) {
|
|
||||||
if pool != nil && pool.GetOn() == common.On {
|
|
||||||
change := int64(float64(val) * rate)
|
|
||||||
poolInfo.CurCoin += change
|
|
||||||
if poolInfo.CurCoin >= pool.GetUpperLimit() {
|
|
||||||
poolInfo.Remain = pool.GetUpperLimit()
|
|
||||||
poolInfo.CurCoin -= pool.GetUpperLimit()
|
|
||||||
poolInfo.Version++
|
|
||||||
}
|
|
||||||
logger.Logger.Tracef("推币机 水池%v PoolInfo:%+v Change:%v Value:%v Rate:%v Limit:%v",
|
|
||||||
i, poolInfo, change, val, rate, pool.GetUpperLimit())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
f(1, cfg.Pool1, conf.GetPool1(), 0.05)
|
|
||||||
f(2, cfg.Pool2, conf.GetPool2(), 0.005)
|
|
||||||
f(3, cfg.Pool3, conf.GetPool3(), 0.001)
|
|
||||||
}
|
|
||||||
|
|
@ -119,76 +119,6 @@ func init() {
|
||||||
etcd.Register(etcd.KeyActConsume, webapi.ConsumeConfig{}, platformConfigEvent)
|
etcd.Register(etcd.KeyActConsume, webapi.ConsumeConfig{}, platformConfigEvent)
|
||||||
// 推金币活动配置
|
// 推金币活动配置
|
||||||
etcd.Register(etcd.KeyActPushCoin, webapi.PushCoinConfig{}, platformConfigEvent)
|
etcd.Register(etcd.KeyActPushCoin, webapi.PushCoinConfig{}, platformConfigEvent)
|
||||||
|
|
||||||
//WelfareMgrSington.UpdatePushCoinConfig(&webapi.PushCoinConfig{
|
|
||||||
// Platform: "1",
|
|
||||||
// On: 1,
|
|
||||||
// StartTime: "2024-01-01 00:00:00",
|
|
||||||
// EndTime: "2026-01-01 00:00:00",
|
|
||||||
// Pool1: &webapi.PushCoinPool{
|
|
||||||
// On: 1,
|
|
||||||
// Pool: []*webapi.PushCoinPoolElement{
|
|
||||||
// {
|
|
||||||
// On: 1,
|
|
||||||
// Tp: 0,
|
|
||||||
// Award: []*webapi.ItemInfo{
|
|
||||||
// {
|
|
||||||
// ItemId: common.ItemIDCoin1,
|
|
||||||
// ItemNum: 10,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// Weight: 100,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// UpperLimit: 100000,
|
|
||||||
// },
|
|
||||||
// Pool2: &webapi.PushCoinPool{
|
|
||||||
// On: 1,
|
|
||||||
// Pool: []*webapi.PushCoinPoolElement{
|
|
||||||
// {
|
|
||||||
// On: 1,
|
|
||||||
// Tp: 0,
|
|
||||||
// Award: []*webapi.ItemInfo{
|
|
||||||
// {
|
|
||||||
// ItemId: common.ItemIDCoin2,
|
|
||||||
// ItemNum: 10,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// Weight: 100,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// UpperLimit: 100000,
|
|
||||||
// },
|
|
||||||
// Pool3: &webapi.PushCoinPool{
|
|
||||||
// On: 1,
|
|
||||||
// Pool: []*webapi.PushCoinPoolElement{
|
|
||||||
// {
|
|
||||||
// On: 1,
|
|
||||||
// Tp: 0,
|
|
||||||
// Award: []*webapi.ItemInfo{
|
|
||||||
// {
|
|
||||||
// ItemId: common.ItemIDCoin1,
|
|
||||||
// ItemNum: 10,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// Weight: 100,
|
|
||||||
// },
|
|
||||||
// {
|
|
||||||
// On: 1,
|
|
||||||
// Tp: 1,
|
|
||||||
// Award: []*webapi.ItemInfo{
|
|
||||||
// {
|
|
||||||
// ItemId: 30011,
|
|
||||||
// ItemNum: 1,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// Weight: 100,
|
|
||||||
// Value: 100000,
|
|
||||||
// },
|
|
||||||
// },
|
|
||||||
// UpperLimit: 100000,
|
|
||||||
// },
|
|
||||||
//})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
|
func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, event *clientv3.Event, data interface{}) {
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,6 @@ func init() {
|
||||||
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryLog, Data: &model.LotteryLog{}})
|
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.DBLotteryLog, Data: &model.LotteryLog{}})
|
||||||
mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankNian, Data: &model.NianInfo{}})
|
mq.RegisterMessage(&mq.RegisterMessageParam{Name: model.MQRankNian, Data: &model.NianInfo{}})
|
||||||
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.NianPlayerRank, Data: &model.NianPlayerRankLog{}})
|
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.NianPlayerRank, Data: &model.NianPlayerRankLog{}})
|
||||||
mq.RegisterMessage(&mq.RegisterMessageParam{Name: mq.LoginError, Data: &model.LoginErrorLog{}})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
|
|
||||||
|
|
@ -433,11 +433,4 @@ func SCLogin(s *netlib.Session, sid int64, csLogin *login_proto.CSLogin, acc *mo
|
||||||
proto.SetDefaults(sclogin)
|
proto.SetDefaults(sclogin)
|
||||||
common.SendToGate(sid, int(login_proto.LoginPacketID_PACKET_SC_LOGIN), sclogin, s)
|
common.SendToGate(sid, int(login_proto.LoginPacketID_PACKET_SC_LOGIN), sclogin, s)
|
||||||
logger.Logger.Tracef("SCLogin %v", sclogin)
|
logger.Logger.Tracef("SCLogin %v", sclogin)
|
||||||
if code != login_proto.OpResultCode_OPRC_Sucess {
|
|
||||||
log := &model.LoginErrorLog{
|
|
||||||
TypeId: int32(code.Enum().Number()),
|
|
||||||
Ts: time.Now().Unix(),
|
|
||||||
}
|
|
||||||
mq.Write(log)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2992,6 +2992,19 @@ func init() {
|
||||||
player.AddDiamond(addCoin, 0, 5555, "platform", "dubeg加钻石")
|
player.AddDiamond(addCoin, 0, 5555, "platform", "dubeg加钻石")
|
||||||
player.SendDiffData()
|
player.SendDiffData()
|
||||||
jsonRet.Data.Count = player.Diamond
|
jsonRet.Data.Count = player.Diamond
|
||||||
|
} else if msg.Rpc == 12 {
|
||||||
|
items := []*model.Item{{
|
||||||
|
ItemId: int32(msg.Bankcoin),
|
||||||
|
ItemNum: int64(msg.Daybuytimes),
|
||||||
|
}}
|
||||||
|
BagMgrSingleton.AddItems(&model.AddItemParam{
|
||||||
|
Platform: player.Platform,
|
||||||
|
SnId: player.SnId,
|
||||||
|
Change: items,
|
||||||
|
GainWay: common.GainWay_ItemUse,
|
||||||
|
Operator: "system",
|
||||||
|
Remark: "测试",
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
jsonDataRsp, err = json.Marshal(jsonRet)
|
jsonDataRsp, err = json.Marshal(jsonRet)
|
||||||
|
|
|
||||||
Binary file not shown.
Loading…
Reference in New Issue