package model import ( "encoding/json" "os" "github.com/globalsign/mgo" "mongo.games.com/goserver/core/logger" ) const TimeFormat = "2006-01-02 15:04:05" type GameParam struct { Observers []func() NewPlayerCoin int32 //新建角色初始金豆数量 VerifyClientVersion bool //验证客户端版本信息 UseEtcd bool //是否使用etcd SrvMaintain bool //服务器维护切换 HundredScenePreCreate bool //百人场预创建 GuestDefaultName string //游客默认昵称 SpreadAccountQPT int32 //流水上报 条数/每次 FakeVerifyCode string //假的验证码 MorePlayerLimit int //moreplayerdata单次最大查询用户量 SamePlaceLimit int32 //和同一个人游戏的局数限制 RobotInviteInitInterval int64 //机器人邀请的初始间隔时间(s) RobotInviteIntervalMax int64 //机器人邀请的最大间隔时间(s) SceneMaxIdle int64 //空房间最大空闲时间(超过指定时间自动销毁)(s) LoginStateCacheSec int32 //登录态数据缓存时间 KickoutDefaultFreezeMinute int64 //踢下线默认封号几分钟 GameConfigGroupUseRobot bool //游戏分组使用机器人 SameIpNoLimit bool //同ip不做限制 PreLoadRobotCount int //预加载机器人数量 QMOptimization bool //全民推广流水优化 EnterAfterStartSwitch bool //中途加入开关 MongoDebug bool //mongodb调试开关 WhiteHttpAddr []string //白名单 RbAutoBalance bool RbAutoBalanceRate float64 RbAutoBalanceCoin int64 ThirdPltTransferInterval int32 //查询第三方平台向系统能否转账时间间隔,单位秒 ThirdPltTransferMaxTry int32 //查询第三方平台向系统能否转账,最大尝试次数。默认是1次 ThirdPltReqTimeout int32 //三方平台接口请求超时时间设置,默认是30s IosStablePrizeMinRecharge int32 //IOS稳定版最低充值需求 IosStableInstallPrize int32 //IOS稳定版安装奖励 ValidDeviceInfo bool //是否验证设备信息 InvalidRobotAccRate int //每次更换过期机器人账号的比例,百分比 InvalidRobotDay int //机器人过期的天数 CreatePrivateSceneCnt int //每人可以创建私有房间数量 BacklogGameHorseRaceLamp int //游戏内公告储备多少条,超出丢弃 IsRobFightTest bool //是否开启机器人自己对战功能 PlayerWatchNum int32 //百人游戏允许围观的局数 NotifyPlayerWatchNum int32 //百人游戏围观多少局的时候开始提示 CgAddr string //后台cg工程地址 ReplayDataUseJson bool //回放数据使用json格式 MaxAudienceNum int //最大观战人数 IsFindRoomByGroup bool //查询房间列表时是否使用互通查询,默认是不使用 NoOpTimes int32 //对战场允许托管的局数 ClosePreCreateRoom bool //关闭予创建房间 CloseQMThr bool //关闭全民三方流水计算 ErrResetMongo bool //发生主从问题,是否重置连接 InvitePromoterBind bool //绑定全民判定是否推广员 CSURL string //客户端域名 InitGameHash []string //初始哈希 AtomGameHash []string //原子哈希 MatchSeasonRankMaxNum int //在榜最大人数 CloseNoviceGame []int // 关闭部分新手补偿调控,游戏id CloseNovice bool // 关闭全部游戏新手补偿调控 RankSeasonMaxNum int // 排位赛排行榜最大人数 RankPlayerCoinMaxNum int // 金币榜最大人数 CloseRankListRobot bool // 关闭排行榜机器人数据 RankTimeout int // 排行榜刷新时间,秒 AgoraAddress string // 客户端语音api服务地址 InviteUrl string // 邀请活动,玩家分享页面地址 WinCoinUpdateTime int // 收入榜每日几点更新 RankWinCoinMaxNum int // 收入榜最大人数 RankInviteMaxNum int32 // 邀请排行榜最大人数 TestActSwitch bool // 开启所有活动开关 RankPlayerLevelMaxNum int //等级榜最大人数 CloseChannelSwitch bool //关闭渠道开关功能 BackendTimeLocal int //后台时区 GameStaticsFightVersion int // 对战场统计数据版本 TestRankMatchAward bool // 测试段位奖励领取通知,直接改玩家排位积分使玩家获得奖励 RankPlayerPermitMaxNum int32 // 赛季通行证积分排行榜最大人数 PermitInitScore int64 // 赛季通行证初始积分 GuideStepMaxNum int32 // 新手引导步骤最大值 GuideTs int64 // 新手引导时间戳,小于这个时间的玩家不显示新手引导 CustomAwardUpdateTime int // 竞技馆奖励更新时间 CustomAwardMinAddTime int // 竞技馆假奖励方法周期,单位秒 CustomAwardMaxAddTime int // 竞技馆假奖励方法周期,单位秒 } var GameParamPath = "../data/gameparam.json" var GameParamData = &GameParam{} func InitGameParam() { buf, err := os.ReadFile(GameParamPath) if err != nil { logger.Logger.Error("InitGameParam os.ReadFile error ->", err) } err = json.Unmarshal(buf, GameParamData) if err != nil { logger.Logger.Error("InitGameParam json.Unmarshal error ->", err) } if GameParamData.SpreadAccountQPT == 0 { GameParamData.SpreadAccountQPT = 100 } if GameParamData.MorePlayerLimit == 0 { GameParamData.MorePlayerLimit = 50 } if GameParamData.SamePlaceLimit > 10 { GameParamData.SamePlaceLimit = 10 } if GameParamData.RobotInviteInitInterval == 0 { GameParamData.RobotInviteInitInterval = 2 } if GameParamData.RobotInviteIntervalMax == 0 { GameParamData.RobotInviteIntervalMax = 10 } if GameParamData.SceneMaxIdle == 0 { GameParamData.SceneMaxIdle = 3600 } if GameParamData.LoginStateCacheSec == 0 { GameParamData.LoginStateCacheSec = 300 } if GameParamData.KickoutDefaultFreezeMinute == 0 { GameParamData.KickoutDefaultFreezeMinute = 5 } mgo.SetDebug(GameParamData.MongoDebug) if GameParamData.RbAutoBalance { if GameParamData.RbAutoBalanceRate == 0 { GameParamData.RbAutoBalanceRate = 2 } if GameParamData.RbAutoBalanceCoin == 0 { GameParamData.RbAutoBalanceCoin = 100000 } } if GameParamData.ThirdPltTransferInterval == 0 { GameParamData.ThirdPltTransferInterval = 3 } if GameParamData.ThirdPltTransferMaxTry == 0 { GameParamData.ThirdPltTransferMaxTry = 1 } if GameParamData.ThirdPltReqTimeout == 0 { GameParamData.ThirdPltReqTimeout = 30 } if GameParamData.IosStablePrizeMinRecharge == 0 { GameParamData.IosStablePrizeMinRecharge = 5000 } if GameParamData.IosStableInstallPrize == 0 { GameParamData.IosStableInstallPrize = 100 } if GameParamData.InvalidRobotDay == 0 { GameParamData.InvalidRobotDay = 90 } if GameParamData.CreatePrivateSceneCnt == 0 { GameParamData.CreatePrivateSceneCnt = 20 } if GameParamData.PlayerWatchNum <= 2 { GameParamData.PlayerWatchNum = 20 } if GameParamData.NotifyPlayerWatchNum <= 2 { GameParamData.NotifyPlayerWatchNum = 17 } if GameParamData.NotifyPlayerWatchNum >= GameParamData.PlayerWatchNum { GameParamData.NotifyPlayerWatchNum = GameParamData.PlayerWatchNum - 3 } if GameParamData.NoOpTimes <= 2 { GameParamData.NoOpTimes = 2 } if GameParamData.BacklogGameHorseRaceLamp == 0 { GameParamData.BacklogGameHorseRaceLamp = 50 } if GameParamData.MaxAudienceNum == 0 { GameParamData.MaxAudienceNum = 20 } for _, v := range GameParamData.Observers { v() } if len(GameParamData.InitGameHash) == 0 { GameParamData.InitGameHash = []string{"ff6c5b1daa1068897377f7a64a762eafda4d225f25bf8e3bb476a7c4f2d10468"} } if len(GameParamData.AtomGameHash) == 0 { GameParamData.AtomGameHash = []string{`0ead8d98e67a7c9197a6bb0e664bb84adbeb25e4e0db63d2158e48b98a50534d`} } if GameParamData.MatchSeasonRankMaxNum == 0 { GameParamData.MatchSeasonRankMaxNum = 50 } if GameParamData.RankSeasonMaxNum == 0 { GameParamData.RankSeasonMaxNum = 100 } if GameParamData.RankPlayerCoinMaxNum == 0 { GameParamData.RankPlayerCoinMaxNum = 100 } if GameParamData.RankTimeout == 0 { GameParamData.RankTimeout = 600 } if GameParamData.RankWinCoinMaxNum == 0 { GameParamData.RankWinCoinMaxNum = 100 } if GameParamData.RankInviteMaxNum == 0 { GameParamData.RankInviteMaxNum = 50 } if GameParamData.WinCoinUpdateTime == 0 { GameParamData.WinCoinUpdateTime = 21 } if GameParamData.RankPlayerLevelMaxNum == 0 { GameParamData.RankPlayerLevelMaxNum = 100 } if GameParamData.BackendTimeLocal == 0 { GameParamData.BackendTimeLocal = 8 } if GameParamData.RankPlayerPermitMaxNum == 0 { GameParamData.RankPlayerPermitMaxNum = 20 } if GameParamData.GuideStepMaxNum == 0 { GameParamData.GuideStepMaxNum = 4 } if GameParamData.GuideTs == 0 { GameParamData.GuideTs = 1724623200 } if GameParamData.CustomAwardUpdateTime == 0 { GameParamData.CustomAwardUpdateTime = 60 } if GameParamData.CustomAwardMinAddTime == 0 { GameParamData.CustomAwardMinAddTime = 20 * 60 } if GameParamData.CustomAwardMaxAddTime == 0 { GameParamData.CustomAwardMaxAddTime = 30 * 60 } }