1.修复抽奖档位不统一的问题
This commit is contained in:
@@ -187,9 +187,9 @@ class PlayStartLogic
|
||||
$rollNumber = (int) ($chosen['grid_number'] ?? 0);
|
||||
$realEv = (float) ($chosen['real_ev'] ?? 0);
|
||||
// T5/再来一次:以奖励行 tier 为准,并以摇奖档位 $tier 兜底(与 reward_tier 展示一致,避免 dice_reward 行缺 tier 时不发券)
|
||||
$isTierT5 = (string) ($chosen['tier'] ?? '') === 'T5';
|
||||
if ($isTierT5 === false && (string) ($tier ?? '') === 'T5') {
|
||||
$isTierT5 = true;
|
||||
$isTierPlayAgain = (string) ($chosen['tier'] ?? '') === 'T5';
|
||||
if ($isTierPlayAgain === false && (string) ($tier ?? '') === 'T5') {
|
||||
$isTierPlayAgain = true;
|
||||
}
|
||||
// 摇色子中奖:按 dice_reward_config.real_ev 直接结算(已乘 ante)
|
||||
$rewardWinCoin = round($realEv * $ante, 2);
|
||||
@@ -230,7 +230,7 @@ class PlayStartLogic
|
||||
// 中 BIGWIN 豹子:不走原奖励流程,不记录原奖励,不触发 T5 再来一次,仅发放豹子奖金
|
||||
$rewardWinCoin = 0.0;
|
||||
$realEv = 0.0;
|
||||
$isTierT5 = false;
|
||||
$isTierPlayAgain = false;
|
||||
} else {
|
||||
$rollArray = $this->generateNonSuperWinRollArrayWithSum($rollNumber);
|
||||
}
|
||||
@@ -276,7 +276,7 @@ class PlayStartLogic
|
||||
$startIndex,
|
||||
$targetIndex,
|
||||
$rollArray,
|
||||
$isTierT5,
|
||||
$isTierPlayAgain,
|
||||
$tier,
|
||||
&$record,
|
||||
&$settledWinCoin
|
||||
@@ -372,7 +372,7 @@ class PlayStartLogic
|
||||
// 若本局中奖档位为 T5,则额外赠送 1 次免费抽奖次数:
|
||||
// - 新结构:写入 free_ticket(ante=本局注数,count+1)
|
||||
// - 兼容旧结构:free_ticket_count +1
|
||||
if ($isTierT5) {
|
||||
if ($isTierPlayAgain) {
|
||||
$ft = $p->free_ticket ?? null;
|
||||
$ftAnte = null;
|
||||
$ftCount = 0;
|
||||
@@ -654,6 +654,7 @@ class PlayStartLogic
|
||||
*/
|
||||
public function simulateOnePlay($config, int $direction, int $lotteryType = 0, int $ante = 1, ?array $customTierWeights = null, ?int $configDeptId = null): array
|
||||
{
|
||||
$useKillMode = false;
|
||||
$rewardInstance = DiceReward::getCachedInstance($configDeptId);
|
||||
$byTierDirection = $rewardInstance['by_tier_direction'] ?? [];
|
||||
$maxTierRetry = 10;
|
||||
|
||||
@@ -95,7 +95,7 @@ class DiceRewardController extends BaseController
|
||||
* 一键测试权重:创建测试记录并启动单进程后台执行,写入 dice_play_record_test
|
||||
* 参数:lottery_config_id 可选;paid_tier_weights / free_tier_weights 自定义档位;
|
||||
* paid_s_count, paid_n_count
|
||||
* chain_free_mode=1:仅按付费次数模拟;付费抽到再来一次/T5 则在队列中插入免费局(同底注、lottery_type=免费、paid_amount=0)
|
||||
* chain_free_mode=1:仅按付费次数模拟;付费抽到再来一次/T4 则在队列中插入免费局(同底注、lottery_type=免费、paid_amount=0)
|
||||
* kill_mode_enabled=1:测试内启用杀分;当模拟玩家累计盈利达到 test_safety_line 后,付费抽奖切到 killScore
|
||||
*/
|
||||
#[Permission('一键测试权重', 'dice:reward:index:startWeightTest')]
|
||||
|
||||
@@ -19,7 +19,7 @@ use think\model\relation\BelongsTo;
|
||||
* @property $player_id 玩家id
|
||||
* @property $admin_id 关联玩家所属管理员ID(DicePlayer.admin_id)
|
||||
* @property $use_coins 消耗硬币
|
||||
* @property $ante 底注/注数(历史购买记录默认为1;T5再来一次写入本次注数)
|
||||
* @property $ante 底注/注数(历史购买记录默认为1;T4再来一次写入本次注数)
|
||||
* @property $total_ticket_count 总抽奖次数
|
||||
* @property $paid_ticket_count 购买抽奖次数
|
||||
* @property $free_ticket_count 赠送抽奖次数
|
||||
|
||||
@@ -83,7 +83,7 @@
|
||||
|
||||
其中地图的索引可以按照需求点击图中的按规则生成
|
||||
|
||||
并且规则尽可能符合:结算金额>2 → T1;2>=结算金额>1 → T2;1>=结算金额>0 → T3;结算金额=0 → T4(再来一次);0>结算金额 → T5(惩罚)
|
||||
并且规则尽可能符合:结算金额>2 → T1;2>=结算金额>1 → T2;1>=结算金额>0 → T3;0>结算金额 → T4(惩罚);结算金额=0 → T5(再来一次)
|
||||
|
||||

|
||||
|
||||
|
||||
Reference in New Issue
Block a user