game_sync/model/fishingparam.go

374 lines
13 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package model
import (
"encoding/json"
"mongo.games.com/goserver/core/logger"
"os"
)
type FishingParam struct {
//2.1 历史流水调整系数相关配置
Wa float64 // = 100000 //历史流水的调整基准,高于此值后历史流水系数不再变化
Ramax float64 // = 1.3 //历史流水调整系数最大值
Ramin float64 // = 0.97 //历史流水调整系数最小值
//2.2 历史输赢调整系数相关配置
Hmax_chu float64 // = 20000
Hmin_chu float64 // = -15000
Beta_chu float64 // = 0.0001
Alpha_chu float64 // = 0.00015
RwMax float64 // = 1.03
Hmax_zho float64 // = 100000
Hmin_zho float64 // = -100000
Beta_zho float64 // = 0.0001
Alpha_zho float64 // = 0.0001
Hmax_gao float64 // = 200000
Hmin_gao float64 // = -300000
Beta_gao float64 // = 0.0002
Alpha_gao float64 // = 0.00005
R1 float64 // = 1
Theta float64 // = 0.5
//2.3 充值行为调整系数相关配置
P1 float64 // = 10000 //充值流水分段1
Rp1 float64 // = 1.01 //在充值后水流在[0P1]之间的调整系数
P2 float64 // = 30000 //充值流水分段2
Rp2 float64 // = 1.001 //在充值后水流在[P1P2]之间的调整系数
Rp3 float64 // = 1 //在充值后水流在[P2∞]之间的调整系数
//2.4 每日优惠系数相关配置
D1 float64 // = 2000 //日流水分段1
Rd1 float64 // = 1.01 //日水流在[0D1)之间的调整系数
D2 float64 // = 5000 //日流水分段2
Rd2 float64 // = 1.001 //日水流在[D1D2)之间的调整系数
Rd3 float64 // = 1 //日水流在[D2∞)之间的调整系数
//2.5 捕鱼平台调整系数相关配置
Tmin float64 // = 0 //平台收益底线
R2 float64 // = 1 //平台收益调整系数基准值
Rtmin float64 // = 0.5 //平台收益调整系数最小值
Rtmin2 float64 // = 0 // 寻红夺宝特有字段
Delta_chu float64 // = 0.00001 //初级场下压系数
Delta_zho float64 // = 0.00001 //中级场下压系数
Delta_gao float64 // = 0.00001 //高级场下压系数
ReturnCoefficient_chu float64 // 初级场上限返还系数
ReturnCoefficient_zho float64 // 中级场上限返还系数
ReturnCoefficient_gao float64 // 高级场上限返还系数
UpperLimitReturnCoefficient [][]float64 // 水池平台收益返还
UpperFishMultiple [][]ControlParam //鱼倍数百分比上限 (按照权重随机)
LowerFishMultiple [][]ControlParam //鱼倍数百分比下限 (按照权重随机)
UpperFishMultipleFixedValue [][]ControlParam //鱼倍数百分比上限 (指定固定值)
LowerFishMultipleFixedValue [][]ControlParam //鱼倍数百分比下限 (指定固定值)
PersonalPoolFloatingCoefficient []int32 // 个人水池场此浮动系数
PersonalPoolInitialValue []int32 // 个人水池场此初始值
JackpotRate float64 // 天天捕鱼jack奖池抽成
JackpotOne int32 // 天天捕鱼jack奖池一等奖概率
JackpotTwo int32 // 天天捕鱼jack奖池二等奖概率
JackpotThreeRate int32 // 天天捕鱼jack奖池三等奖概率
JackpotFourRate int32 // 天天捕鱼jack奖池四等奖概率
JackpotD1 int32 // 天天捕鱼jack奖池爆奖系数
JackpotD2 int32 // 天天捕鱼jack奖池爆奖系数
JackpotD3 int32 // 天天捕鱼jack奖池爆奖系数
JackpotD4 int32 // 天天捕鱼jack奖池爆奖系数
JackpotBate1 int32 // 奖池分母
JackpotBate2 int32 // 奖池分母
JackpotBate3 int32 // 奖池分母
JackpotCoin1 int64 // 奖池奖励金币
JackpotCoin2 int64 // 奖池奖励金币
JackpotCoin3 int64 // 奖池奖励金币
JackpotInitCoin int64 //奖池初始金额
PranaRatio float64 // 能量炮抽成比例
PranaECoin int32 // 初级场蓄能上限
PranaMCoin int32 // 中级场蓄能上限
PranaHCoin int32 // 高级场蓄能上限
FishDealY1 int32 //致命一击系数Y
FishDealY2 int32 //致命一击系数Y
FishDealY3 int32 //致命一击系数Y
FishDealY4 int32 //致命一击系数Y
//CommonPoolRatio float64 // 公共池比例
//PersonPoolRatio float64 // 私人池比例
SLFishRate float64 //特殊鱼L概率
SHFishRate float64 //特殊鱼H概率
SignRate int
LimiteWinCoin1 int64 //天天捕鱼初级场单条鱼赢取上限
LimiteWinCoin2 int64 //天天捕鱼中级场单条鱼赢取上限
LimiteWinCoin3 int64 //天天捕鱼高级场单条鱼赢取上限
FreeUserLimit int64 //免费用户金币赢取上限
}
/*
控制百分比
*/
type ControlParam struct {
Percentage int // 炮数占比
Weight int // 对应权重
}
var FishingParamPath = "../data/fishingparam.json"
var FishingParamData = &FishingParam{}
func InitFishingParam() {
buf, err := os.ReadFile(FishingParamPath)
if err != nil {
logger.Logger.Warn("InitFishingParam os.ReadFile error ->", err)
}
err = json.Unmarshal(buf, FishingParamData)
if err != nil {
logger.Logger.Warn("InitFishingParam json.Unmarshal error ->", err)
}
if FishingParamData.Wa == 0 {
FishingParamData.Wa = 100000 //历史流水的调整基准,高于此值后历史流水系数不再变化
}
if FishingParamData.Ramax == 0 {
FishingParamData.Ramax = 1.3 //历史流水调整系数最大值
}
if FishingParamData.Ramin == 0 {
FishingParamData.Ramin = 0.97 //历史流水调整系数最小值
}
//2.2 历史输赢调整系数相关配置
if FishingParamData.Hmax_chu == 0 {
FishingParamData.Hmax_chu = 20000
}
if FishingParamData.Hmin_chu == 0 {
FishingParamData.Hmin_chu = -15000
}
if FishingParamData.Beta_chu == 0 {
FishingParamData.Beta_chu = 0.0001
}
if FishingParamData.Alpha_chu == 0 {
FishingParamData.Alpha_chu = 0.00015
}
if FishingParamData.RwMax == 0 {
FishingParamData.RwMax = 1.03
}
if FishingParamData.Hmax_zho == 0 {
FishingParamData.Hmax_zho = 100000
}
if FishingParamData.Hmin_zho == 0 {
FishingParamData.Hmin_zho = -100000
}
if FishingParamData.Beta_zho == 0 {
FishingParamData.Beta_zho = 0.0001
}
if FishingParamData.Alpha_zho == 0 {
FishingParamData.Alpha_zho = 0.0001
}
if FishingParamData.Hmax_gao == 0 {
FishingParamData.Hmax_gao = 200000
}
if FishingParamData.Hmin_gao == 0 {
FishingParamData.Hmin_gao = -300000
}
if FishingParamData.Beta_gao == 0 {
FishingParamData.Beta_gao = 0.0002
}
if FishingParamData.Alpha_gao == 0 {
FishingParamData.Alpha_gao = 0.00005
}
if FishingParamData.R1 == 0 {
FishingParamData.R1 = 1
}
if FishingParamData.Theta == 0 {
FishingParamData.Theta = 0.5
}
//2.3 充值行为调整系数相关配置
if FishingParamData.P1 == 0 {
FishingParamData.P1 = 10000 //充值流水分段1
}
if FishingParamData.Rp1 == 0 {
FishingParamData.Rp1 = 1.01 //在充值后水流在[0P1]之间的调整系数
}
if FishingParamData.P2 == 0 {
FishingParamData.P2 = 30000 //充值流水分段2
}
if FishingParamData.Rp2 == 0 {
FishingParamData.Rp2 = 1.001 //在充值后水流在[P1P2]之间的调整系数
}
if FishingParamData.Rp3 == 0 {
FishingParamData.Rp3 = 1 //在充值后水流在[P2∞]之间的调整系数
}
//2.4 每日优惠系数相关配置
if FishingParamData.D1 == 0 {
FishingParamData.D1 = 2000 //日流水分段1
}
if FishingParamData.Rd1 == 0 {
FishingParamData.Rd1 = 1.01 //日水流在[0D1)之间的调整系数
}
if FishingParamData.D2 == 0 {
FishingParamData.D2 = 5000 //日流水分段2
}
if FishingParamData.Rd2 == 0 {
FishingParamData.Rd2 = 1.001 //日水流在[D1D2)之间的调整系数
}
if FishingParamData.Rd3 == 0 {
FishingParamData.Rd3 = 1 //日水流在[D2∞)之间的调整系数
}
//2.5 捕鱼平台调整系数相关配置
if FishingParamData.R2 == 0 {
FishingParamData.R2 = 1 //平台收益调整系数基准值
}
if FishingParamData.Rtmin == 0 {
FishingParamData.Rtmin = 0.5 //平台收益调整系数最小值
}
if FishingParamData.Rtmin2 == 0 {
FishingParamData.Rtmin2 = 0 //平台收益调整系数最小值
}
if FishingParamData.Delta_chu == 0 {
FishingParamData.Delta_chu = 0.00001 //初级场下压系数
}
if FishingParamData.Delta_zho == 0 {
FishingParamData.Delta_zho = 0.00001 //中级场下压系数
}
if FishingParamData.Delta_gao == 0 {
FishingParamData.Delta_gao = 0.00001 //高级场下压系数
}
if FishingParamData.ReturnCoefficient_chu == 0 {
FishingParamData.ReturnCoefficient_chu = 1 // 初级场返还系数
}
if FishingParamData.ReturnCoefficient_zho == 0 {
FishingParamData.ReturnCoefficient_zho = 1 // 中级场返还系数
}
if FishingParamData.ReturnCoefficient_gao == 0 {
FishingParamData.ReturnCoefficient_gao = 1 // 高级场返还系数
}
if len(FishingParamData.UpperLimitReturnCoefficient) == 0 {
FishingParamData.UpperLimitReturnCoefficient = [][]float64{
{1.5, 2, 1.5},
{1.2, 1.5, 1.2},
{1, 1.2, 1.05},
}
}
if len(FishingParamData.UpperFishMultiple) == 0 {
FishingParamData.UpperFishMultiple = [][]ControlParam{
{{140, 8}, {150, 8}, {160, 7}, {170, 7}, {180, 6}, {190, 6}, {200, 4}},
//{{140, 10}, {150, 8}, {160, 7}, {170, 6}, {180, 6}, {190, 6}, {200, 4}},
{{140, 8}, {150, 8}, {160, 7}, {170, 7}, {180, 6}, {200, 2}},
}
}
if len(FishingParamData.LowerFishMultiple) == 0 {
FishingParamData.LowerFishMultiple = [][]ControlParam{
{{10, 6}, {20, 6}, {30, 7}, {40, 7},
{50, 8}, {60, 8}, {70, 9}, {80, 9},
{90, 10}, {100, 10}, {110, 10}, {120, 9}, {130, 9}},
//{{10, 6}, {20, 6}, {30, 6}, {40, 7},
// {50, 8}, {60, 10}, {70, 12}, {80, 15},
// {90, 20}, {100, 25}, {110, 20}, {120, 15}, {130, 12}},
{{20, 6}, {30, 7}, {40, 7}, {50, 8}, {60, 8},
{70, 9}, {80, 9}, {90, 10}, {100, 10}, {110, 10}, {120, 9}, {130, 9}},
}
}
if len(FishingParamData.PersonalPoolFloatingCoefficient) == 0 {
FishingParamData.PersonalPoolFloatingCoefficient = []int32{1, 1, 1}
}
if len(FishingParamData.PersonalPoolInitialValue) == 0 {
FishingParamData.PersonalPoolInitialValue = []int32{100, 1000, 10000}
}
if FishingParamData.JackpotRate == 0 {
FishingParamData.JackpotRate = 0.05
}
if FishingParamData.JackpotOne == 0 {
FishingParamData.JackpotOne = 3
}
if FishingParamData.JackpotTwo == 0 {
FishingParamData.JackpotTwo = 5
}
if FishingParamData.JackpotThreeRate == 0 {
FishingParamData.JackpotThreeRate = 12
}
if FishingParamData.JackpotFourRate == 0 {
FishingParamData.JackpotFourRate = 80
}
if FishingParamData.JackpotD1 == 0 {
FishingParamData.JackpotD1 = 5
}
if FishingParamData.JackpotD2 == 0 {
FishingParamData.JackpotD2 = 3
}
if FishingParamData.JackpotD3 == 0 {
FishingParamData.JackpotD1 = 2
}
if FishingParamData.JackpotD4 == 0 {
FishingParamData.JackpotD4 = 1
}
if FishingParamData.JackpotBate1 == 0 {
FishingParamData.JackpotBate1 = 500000
}
if FishingParamData.JackpotBate2 == 0 {
FishingParamData.JackpotBate2 = 5000000
}
if FishingParamData.JackpotBate3 == 0 {
FishingParamData.JackpotBate3 = 50000000
}
if FishingParamData.JackpotCoin1 == 0 {
FishingParamData.JackpotCoin1 = 5000
}
if FishingParamData.JackpotCoin2 == 0 {
FishingParamData.JackpotCoin2 = 50000
}
if FishingParamData.JackpotCoin3 == 0 {
FishingParamData.JackpotCoin3 = 500000
}
if FishingParamData.PranaRatio == 0 {
FishingParamData.PranaRatio = 0.01
}
if FishingParamData.PranaECoin == 0 {
FishingParamData.PranaECoin = 2000
}
if FishingParamData.PranaMCoin == 0 {
FishingParamData.PranaMCoin = 20000
}
if FishingParamData.PranaHCoin == 0 {
FishingParamData.PranaHCoin = 200000
}
if FishingParamData.FishDealY1 == 0 {
FishingParamData.FishDealY1 = 15
}
if FishingParamData.FishDealY2 == 0 {
FishingParamData.FishDealY2 = 13
}
if FishingParamData.FishDealY3 == 0 {
FishingParamData.FishDealY3 = 10
}
if FishingParamData.SLFishRate == 0 {
FishingParamData.SLFishRate = 0.60
}
if FishingParamData.SHFishRate == 0 {
FishingParamData.SHFishRate = 0.80
}
if FishingParamData.SignRate == 0 {
FishingParamData.SignRate = 70
}
if FishingParamData.JackpotInitCoin == 0 {
FishingParamData.JackpotInitCoin = 234982125
//FishingParamData.JackpotInitCoin = 0
}
if FishingParamData.LimiteWinCoin1 == 0 {
FishingParamData.LimiteWinCoin1 = 20000
}
if FishingParamData.LimiteWinCoin2 == 0 {
FishingParamData.LimiteWinCoin2 = 60000
}
if FishingParamData.LimiteWinCoin3 == 0 {
FishingParamData.LimiteWinCoin3 = 300000
}
if FishingParamData.FreeUserLimit == 0 {
FishingParamData.FreeUserLimit = 2000
}
}