From c420f44577b1295cf0cdf52469b521d349e05279 Mon Sep 17 00:00:00 2001 From: tomas Date: Mon, 3 Mar 2025 10:35:32 +0800 Subject: [PATCH] fix coin --- gamesrv/sugarrush/playerdata_sugarrush.go | 21 ------- gamesrv/sugarrush/scenedata_sugarrush.go | 65 ++++++++++++++++++++++ gamesrv/sugarrush/scenepolicy_sugarrush.go | 18 +++--- 3 files changed, 76 insertions(+), 28 deletions(-) diff --git a/gamesrv/sugarrush/playerdata_sugarrush.go b/gamesrv/sugarrush/playerdata_sugarrush.go index 1ed3613..b9c9d89 100644 --- a/gamesrv/sugarrush/playerdata_sugarrush.go +++ b/gamesrv/sugarrush/playerdata_sugarrush.go @@ -24,27 +24,6 @@ type SugarRushPlayerData struct { 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 *SugarRushPlayerData) init() { p.SlotsSession = base.NewSession(uint64(p.SnId), p.Coin*sugarrush.NowByte) diff --git a/gamesrv/sugarrush/scenedata_sugarrush.go b/gamesrv/sugarrush/scenedata_sugarrush.go index 7062f5c..102601a 100644 --- a/gamesrv/sugarrush/scenedata_sugarrush.go +++ b/gamesrv/sugarrush/scenedata_sugarrush.go @@ -1,7 +1,10 @@ package sugarrush import ( + "encoding/json" + "mongo.games.com/game/gamerule/sugarrush" "mongo.games.com/game/gamesrv/base" + "mongo.games.com/game/gamesrv/slotspkg/slots/types/cli" ) type SugarRushSceneData struct { @@ -42,3 +45,65 @@ func (s *SugarRushSceneData) OnPlayerLeave(p *base.Player, reason int) { } s.delPlayer(p.SnId) } + +type LinkPositions struct { + // Indexes for Items that are linked + Positions []int64 `json:"Positions,omitempty"` +} +type CustomEliminate struct { + LinkPositions []*LinkPositions + AppendSymbols [][]int64 + FormattedSymbols [][]int64 + LinePays []float64 + LineMultis []int64 + WinCoins []int64 + MaxWin bool +} + +func (s *SugarRushSceneData) EnterResponseFixCoin(Response *cli.SlotsEnterResponse) { + Response.Coin /= sugarrush.NowByte + Response.NodeTree.BetCoin.Coin /= sugarrush.NowByte + for _, node := range Response.NodeTree.Nodes { + node.Win /= sugarrush.NowByte + node.TotalWin /= sugarrush.NowByte + node.ChildrenTotalWin /= sugarrush.NowByte + node.Bet /= sugarrush.NowByte + } + for _, feature := range Response.NodeTree.Features { + feature.Win /= sugarrush.NowByte + var customEliminate CustomEliminate + json.Unmarshal([]byte(feature.Custom), &customEliminate) + for k, wincoin := range customEliminate.WinCoins { + customEliminate.WinCoins[k] /= wincoin + } + for k, lp := range customEliminate.LinePays { + customEliminate.LinePays[k] /= lp + } + ce, _ := json.Marshal(customEliminate) + feature.Custom = string(ce) + } +} +func (s *SugarRushSceneData) PlayResponseFixCoin(Response *cli.SlotsPlayResponse) { + Response.Coin /= sugarrush.NowByte + Response.ActualBet /= sugarrush.NowByte + Response.ActualWin /= sugarrush.NowByte + Response.NodeTree.BetCoin.Coin /= sugarrush.NowByte + for _, node := range Response.NodeTree.Nodes { + node.Win /= sugarrush.NowByte + node.TotalWin /= sugarrush.NowByte + node.ChildrenTotalWin /= sugarrush.NowByte + node.Bet /= sugarrush.NowByte + } + for _, feature := range Response.NodeTree.Features { + if feature.Type == "sugarrush.CustomEliminate" { + feature.Win /= sugarrush.NowByte + var customEliminate CustomEliminate + json.Unmarshal([]byte(feature.Custom), &customEliminate) + for k, wincoin := range customEliminate.WinCoins { + customEliminate.WinCoins[k] /= wincoin + } + ce, _ := json.Marshal(customEliminate) + feature.Custom = string(ce) + } + } +} diff --git a/gamesrv/sugarrush/scenepolicy_sugarrush.go b/gamesrv/sugarrush/scenepolicy_sugarrush.go index 407fef5..c3aa0b2 100644 --- a/gamesrv/sugarrush/scenepolicy_sugarrush.go +++ b/gamesrv/sugarrush/scenepolicy_sugarrush.go @@ -213,15 +213,18 @@ func SugarRushCreateRoomInfoPacket(s *base.Scene, sceneEx *SugarRushSceneData, p //get data Response, err := slots.SlotsMgrSington.Enter(playerEx.SlotsSession, int64(s.GameId)) - if err == nil { - Response.BetSizes = []int64{100, 1000, 2000, 5000, 7500, 20000} - Response.BetChangeList = []float64{} - sceneEx.BetLevel = Response.BetLevels - pi, _ := json.Marshal(Response) - pack.PlayerInfo = string(pi) - } else { + if err != nil { logger.Logger.Error("slots enter err:", err) } + + Response.BetSizes = []int64{100, 1000, 2000, 5000, 7500, 20000} + Response.BetChangeList = []float64{} + sceneEx.BetLevel = Response.BetLevels + pi, _ := json.Marshal(Response) + pack.PlayerInfo = string(pi) + + sceneEx.EnterResponseFixCoin(Response) + proto.SetDefaults(pack) return pack } @@ -410,6 +413,7 @@ func (this *SceneStateStartSugarRush) OnPlayerOp(s *base.Scene, p *base.Player, BetMode: playerEx.BetMode, Ts: time.Now().Unix(), }) + sceneEx.PlayResponseFixCoin(Response) if err != nil { logger.Logger.Error("slots Play err:", err) pack := &protocol.SCSugarRushBilled{