优化playroom翻牌逻辑

This commit is contained in:
hahwu 2024-12-26 11:13:40 +08:00
parent 1b729145fe
commit e3752d3f08
3 changed files with 40 additions and 6 deletions

View File

@ -30,7 +30,7 @@ func init() {
func GetEmitTypeProduce(EmitType string) []string {
data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT_TYPE, EmitType)
if err != nil {
log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType)
// log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType)
return []string{}
}
return strings.Split(gamedata.GetStringValue(data, "Produce"), ",")
@ -39,7 +39,7 @@ func GetEmitTypeProduce(EmitType string) []string {
func GetEmitType2(EmitType string) int {
data, err := gamedata.GetDataByKey(CFG_MERGE_EMIT_TYPE, EmitType)
if err != nil {
log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType)
// log.Debug("GetEmitTypeProduce GetOne EmitType:%s not found", EmitType)
return 0
}
return gamedata.GetIntValue(data, "Type2")

View File

@ -765,9 +765,12 @@ func (ad *GameLogic) RegisterNetWorkFunc() {
// 宠物宝藏
RegisterMsgProcessFunc("ReqFriendTreasure", ReqFriendTreasure) // 请求好友宝藏数据
RegisterMsgProcessFunc("ReqFriendTreasureStart", ReqFriendTreasureStart) // 开始挖宝
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 挖宝
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 挖宝
RegisterMsgProcessFunc("ReqFriendTreasureStart", ReqFriendTreasureStart) // 开始游戏
RegisterMsgProcessFunc("ReqFriendTreasureFilp", ReqFriendTreasureFilp) // 翻牌
RegisterMsgProcessFunc("ReqFriendTreasureEnd", ReqFriendTreasureEnd) // 结束游戏
RegisterMsgProcessFunc("ReqKafkaLog", ReqKafkaLog) // 客户端日志
}
func (ad *GameLogic) CreateHttpManager() {

View File

@ -13,7 +13,7 @@ import (
type PlayroomMod struct {
Collect map[int]int // 装饰
Room map[int]int // 房间
Status int // 0: 未开始 1: 进行中 2: 结束
Status int // 0: 未拜访 1: 拜访
Endtime int64 // 结束时间
Starttime int64 // 开始时间
WorkStatus int // 0: 未开始 1: 进行中 2: 结束
@ -34,6 +34,9 @@ type PlayroomMod struct {
Flip map[int]int // 翻牌
FlipReward []*item.Item // 翻牌奖励
WorkOutline int // 是否离线
LastFlip int // 上次翻牌奖励档次
NoFlip int // 连续未获取最高翻牌奖励次数
TodayFlip bool // 今日是否已获得最高档奖励
}
const (
@ -98,6 +101,11 @@ func (p *PlayroomMod) InitData() {
}
}
func (p *PlayroomMod) ZeroUpdate() {
p.TodayFlip = false
p.LastFlip = 0
}
func (p *PlayroomMod) GetVisitor() map[int]*Info {
return p.Visitor
}
@ -396,6 +404,24 @@ func (p *PlayroomMod) FlipCard(Pos int) (int, error) {
FLIP_TYPE_GOLD: 20,
}
Prob := GoUtil.RandMap(RandMap)
/**
若玩家同一天内上一次游玩猫猫小金库未能获得金币档位奖励且当天还未获得过金币档位奖励
或玩家已连续三次未能获得金币档位奖励则启用以下保底逻辑
玩家已翻出两个银币或铜币图案的情况下后续翻牌必然为金币
*/
check := make(map[int]int)
for _, v := range p.Flip {
check[v]++
}
if check[FLIP_TYPE_COPPER] == 2 || check[FLIP_TYPE_SILVER] == 2 {
if p.LastFlip != FLIP_TYPE_GOLD && !p.TodayFlip {
Prob = FLIP_TYPE_GOLD
}
if p.NoFlip == 3 {
Prob = FLIP_TYPE_GOLD
}
}
p.Flip[Pos] = Prob
return Prob, nil
@ -409,12 +435,17 @@ func (p *PlayroomMod) GetFlipReward() ([]*item.Item, error) {
if check[v] == 3 {
switch v {
case FLIP_TYPE_COPPER:
p.NoFlip++
Items = append(Items, p.GameReward[FLIP_TYPE_COPPER])
case FLIP_TYPE_SILVER:
p.NoFlip++
Items = append(Items, p.GameReward[FLIP_TYPE_SILVER])
case FLIP_TYPE_GOLD:
p.NoFlip = 0
p.TodayFlip = true
Items = append(Items, p.GameReward[FLIP_TYPE_GOLD])
}
p.LastFlip = v
p.Status = STATUS_IDLE
p.GameId = 0
p.Flip = make(map[int]int)