tienlen记录调控信息

This commit is contained in:
sk 2024-06-03 16:06:53 +08:00
parent 39b71ea93f
commit 5e0b6139f9
6 changed files with 35 additions and 5 deletions

View File

@ -1632,6 +1632,8 @@ func (this *Scene) NewBigCoinNotice(player *Player, num int64, msgType int64) {
type GameDetailedParam struct {
Trend20Lately string //最近20局开奖结果
CtrlType int
PlayerPool map[int]int
}
// 保存详细游戏日志
@ -1651,7 +1653,8 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga
log := model.NewGameDetailedLogEx(logid, int32(this.GameId), int32(this.SceneId),
this.DbGameFree.GetGameMode(), this.DbGameFree.Id, int32(len(this.Players)),
int32(time.Now().Unix()-this.GameNowTime.Unix()), baseScore,
gamedetailednote, p.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[this.GameId], trend20Lately)
gamedetailednote, p.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[this.GameId], trend20Lately,
gameDetailedParam.CtrlType, gameDetailedParam.PlayerPool)
if log != nil {
if this.IsMatchScene() {
log.MatchId = this.MatchId
@ -1664,7 +1667,8 @@ func (this *Scene) SaveGameDetailedLog(logid string, gamedetailednote string, ga
log := model.NewGameDetailedLogEx(logid, int32(this.GameId), int32(this.SceneId),
this.DbGameFree.GetGameMode(), this.DbGameFree.Id, int32(len(this.Players)),
int32(time.Now().Unix()-this.GameNowTime.Unix()), baseScore,
gamedetailednote, this.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[this.GameId], trend20Lately)
gamedetailednote, this.Platform, this.ClubId, this.RoomId, this.CpCtx, GameDetailedVer[this.GameId], trend20Lately,
gameDetailedParam.CtrlType, gameDetailedParam.PlayerPool)
if log != nil {
if this.IsMatchScene() {
log.MatchId = this.MatchId

View File

@ -29,6 +29,7 @@ type TienLenPlayerData struct {
curHandLimitTimeOut time.Duration // 出牌时间上限
isNotOverLastHand bool //手牌不能压过上家出牌标志
cardScore int // 手牌评分
playerPool int // 个人水池分
}
func (this *TienLenPlayerData) init() {
@ -49,6 +50,7 @@ func (this *TienLenPlayerData) init() {
this.curHandLimitTimeOut = rule.TienLenPlayerOpTimeout
this.isNotOverLastHand = false
this.cardScore = 0
this.playerPool = 0
}
func (this *TienLenPlayerData) Clear() {
@ -67,6 +69,7 @@ func (this *TienLenPlayerData) Clear() {
this.ThinkLongCnt = 0
this.curHandLimitTimeOut = rule.TienLenPlayerOpTimeout
this.isNotOverLastHand = false
this.playerPool = 0
this.MarkFlag(base.PlayerState_WaitNext)
this.TestLog = this.TestLog[:0]

View File

@ -55,6 +55,7 @@ type TienLenSceneData struct {
cHintCards []int32 //客户端提示出牌记录
isCardsKu bool //是否是牌库
cardsKuId int32 //牌库ID
ctrlType int // 1控赢 2控输 0不控
}
func NewTienLenSceneData(s *base.Scene) *TienLenSceneData {
@ -85,6 +86,7 @@ func (this *TienLenSceneData) init() bool {
this.card_play_action_seq_int32 = [][]int32{}
this.bombToEnd = 0
this.allPlayerCards = [][]int32{}
this.ctrlType = 0
this.recordId, _ = model.AutoIncGameLogId()
if this.GetPlayerNum() == 0 {
this.SetPlayerNum(rule.MaxNumOfPlayer)
@ -114,6 +116,7 @@ func (this *TienLenSceneData) Clear() {
this.isAllRob = false
this.robotGamingNum = 0
this.allPlayerCards = [][]int32{}
this.ctrlType = 0
this.recordId, _ = model.AutoIncGameLogId()
for _, player := range this.players {
if player != nil {
@ -1053,6 +1056,7 @@ func (this *TienLenSceneData) SendHandCardOdds() {
robotPlayers = append(robotPlayers, seat)
} else {
seat.odds = this.GetPlayerOdds(seat.Player, this.GameId, this.robotGamingNum > 0)
seat.playerPool = int(this.PlayerPoolOdds(seat.Player))
if seat.odds > 0 {
realPlayersGood = append(realPlayersGood, seat)
G += seat.odds
@ -1233,6 +1237,7 @@ func (this *TienLenSceneData) SendHandCardOdds() {
logger.Logger.Tracef("TienLen SendHandCardOdds Good:%v G:%v Bad:%v B:%v", isGood, G, isBad, B)
if isBad && !isTestPoker && len(robotPlayers) > 0 && !noviceCtrl && !noviceTianHu {
this.ctrlType = 2
gf := base.ConfigMgrInst.GetConfig(this.Platform).GameConfig
items := []int32{gf.GetTianHu(), gf.GetPaiKu(), gf.GetFenCha()}
score := this.RandInt(int(gf.GetTianHu() + gf.GetPaiKu() + gf.GetFenCha()))
@ -1495,7 +1500,8 @@ func (this *TienLenSceneData) SendHandCardOdds() {
}
if !isBad && !isTestPoker && !noviceCtrl && !noviceTianHu { // 天胡调控没有生效
if isGood || isBad {
if isGood {
this.ctrlType = 1
// 牌平分,按从大到小排序
// 使用分差配置,最好牌和最差牌的牌型分差大于分差配置
for i := 0; i < 20; i++ { // 尝试20次如果还不能满足分差配置则直接发牌

View File

@ -1606,6 +1606,13 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
BaseScore: s.GetBaseScore(),
TaxRate: s.DbGameFree.GetTaxRate(),
RoomMode: s.GetSceneMode(),
PlayerPool: make(map[int]int),
}
for _, v := range sceneEx.seats {
if v == nil || !v.IsGameing() {
continue
}
tienlenType.PlayerPool[int(v.SnId)] = v.playerPool
}
nGamingPlayerCount := sceneEx.GetGameingPlayerCnt()
@ -2499,7 +2506,11 @@ func (this *SceneBilledStateTienLen) OnEnter(s *base.Scene) {
}
if isSave {
// 牌局记录
sceneEx.SaveGameDetailedLog(sceneEx.recordId, info, &base.GameDetailedParam{})
sceneEx.SaveGameDetailedLog(sceneEx.recordId, info, &base.GameDetailedParam{
Trend20Lately: "",
CtrlType: sceneEx.ctrlType,
PlayerPool: tienlenType.PlayerPool,
})
}
}

View File

@ -55,6 +55,8 @@ type GameDetailedLog struct {
Time time.Time //记录时间
Trend20Lately string //最近游戏走势
Ts int64 //时间戳
CtrlType int // 1控赢 2控输 0不控
PlayerPool map[int]int // 个人水池分
}
func NewGameDetailedLog() *GameDetailedLog {
@ -63,7 +65,7 @@ func NewGameDetailedLog() *GameDetailedLog {
}
func NewGameDetailedLogEx(logid string, gameid, sceneid, gamemode, gamefreeid, playercount, gametiming, gamebasebet int32,
gamedetailednote string, platform string, clubId int32, clubRoom string, cpCtx CoinPoolCtx, ver int32, trend20Lately string) *GameDetailedLog {
gamedetailednote string, platform string, clubId int32, clubRoom string, cpCtx CoinPoolCtx, ver int32, trend20Lately string, ctrlType int, playerPool map[int]int) *GameDetailedLog {
cl := NewGameDetailedLog()
cl.LogId = logid
cl.GameId = gameid
@ -83,6 +85,8 @@ func NewGameDetailedLogEx(logid string, gameid, sceneid, gamemode, gamefreeid, p
cl.GameDetailVer = ver
cl.Trend20Lately = trend20Lately
cl.Ts = time.Now().Unix()
cl.CtrlType = ctrlType
cl.PlayerPool = playerPool
return cl
}

View File

@ -1521,6 +1521,8 @@ type TienLenType struct {
TaxRate int32 //税率(万分比)
PlayerData []TienLenPerson //玩家信息
RoomMode int
CtrlType int `json:"-"` // 1控赢 2控输 0不控
PlayerPool map[int]int `json:"-"`
}
type TienLenAddItem struct {