Files
chatroom/database/seeders/GameConfigSeeder.php

181 lines
9.2 KiB
PHP
Raw Normal View History

<?php
/**
* 文件功能:游戏默认配置数据填充器
*
* 初始化所有娱乐游戏的默认参数,管理员可在后台修改。
* 所有游戏默认关闭,需要管理员手动开启。
*
* @author ChatRoom Laravel
*
* @version 1.0.0
*/
namespace Database\Seeders;
use App\Models\GameConfig;
use Illuminate\Database\Seeder;
class GameConfigSeeder extends Seeder
{
/**
* 填充所有游戏默认配置。
*/
public function run(): void
{
$games = [
// ─── 百家乐(大小押注)────────────────────────────────────
[
'game_key' => 'baccarat',
'name' => '百家乐',
'icon' => '🎲',
'description' => '系统每隔一段时间自动开一局,玩家在倒计时内押注大/小/豹子,骰子结果决定胜负。',
'enabled' => false,
'params' => [
'interval_minutes' => 2, // 多少分钟开一局
'bet_window_seconds' => 60, // 每局押注窗口(秒)
'min_bet' => 100, // 最低押注金币
'max_bet' => 50000, // 最高押注金币
'payout_big' => 1, // 大1:1 赔率
'payout_small' => 1, // 小1:1 赔率
'payout_triple' => 24, // 豹子1:24 赔率
'kill_points' => [3, 18], // 庄家收割点数(全灭)
],
],
// ─── 老虎机 ──────────────────────────────────────────────
[
'game_key' => 'slot_machine',
'name' => '老虎机',
'icon' => '🎰',
'description' => '消耗金币转动老虎机三列图案匹配可获得不同倍率奖励三个7大奖全服广播。',
'enabled' => false,
'params' => [
'cost_per_spin' => 100, // 每次旋转消耗
'house_edge_percent' => 15, // 庄家边际(%
'daily_limit' => 100, // 每日最多转动次数0=不限)
'jackpot_payout' => 100, // 三个7 赔率
'triple_payout' => 50, // 三个💎 赔率
'same_payout' => 10, // 其他三同 赔率
'pair_payout' => 2, // 两同 赔率
'curse_enabled' => true, // 是否开启诅咒(三💀扣双倍)
],
],
// ─── 神秘箱子 ────────────────────────────────────────────
[
'game_key' => 'mystery_box',
'name' => '神秘箱子',
'icon' => '📦',
'description' => '管理员随时投放或系统定时自动投放神秘箱,最快发送暗号的用户开箱获得奖励。',
'enabled' => false,
'params' => [
feat: 神秘箱子系统完整实现 + 婚姻状态弹窗 + 工具栏优化 ## 新功能 - 神秘箱子系统(MysteryBox)完整实现: - 新增 MysteryBox / MysteryBoxClaim 模型及迁移文件 - DropMysteryBoxJob / ExpireMysteryBoxJob 队列作业 - MysteryBoxController(/mystery-box/status + /mystery-box/claim) - 支持三种类型:普通箱(500~2000金)/ 稀有箱(5000~20000金)/ 黑化箱(陷阱扣200~1000金) - 调度器自动投放 + 管理员手动投放 - CurrencySource 新增 MYSTERY_BOX / MYSTERY_BOX_TRAP 枚举 - 婚姻状态弹窗(工具栏「婚姻」按钮): - 工具栏「呼叫」改为「婚姻」,点击打开婚姻状态弹窗 - 动态渲染三种状态:单身 / 求婚中 / 已婚 - 被求婚方可直接「答应 / 婉拒」;已婚可申请离婚(含二次确认) ## 优化修复 - frame.blade.php:Alpine.js CDN 补加 defer,修复所有组件初始化报错 - scripts.blade.php:神秘箱子暗号主动拦截(不依赖轮询),领取成功后弹 chatDialog 展示结果,更新金币余额 - MysteryBoxController:claim() 时 change() 补传 room_id 记录来源房间 - 后台游戏管理页(game-configs):投放箱子按钮颜色修复;弹窗替换为 window.adminDialog - admin/layouts:新增全局 adminDialog 弹窗组件(替代原生 alert/confirm) - baccarat-panel:FAB 拖动重构为 Alpine.js baccaratFab() 组件,与 slotFab 一致 - GAMES_TODO.md:神秘箱子移入已完成区,补全修复记录
2026-03-03 19:29:43 +08:00
'auto_drop_enabled' => false, // 是否自动定时投放
'auto_interval_hours' => 2, // 自动投放间隔(小时)
'claim_window_seconds' => 60, // 领取窗口(秒)
feat: 神秘箱子系统完整实现 + 婚姻状态弹窗 + 工具栏优化 ## 新功能 - 神秘箱子系统(MysteryBox)完整实现: - 新增 MysteryBox / MysteryBoxClaim 模型及迁移文件 - DropMysteryBoxJob / ExpireMysteryBoxJob 队列作业 - MysteryBoxController(/mystery-box/status + /mystery-box/claim) - 支持三种类型:普通箱(500~2000金)/ 稀有箱(5000~20000金)/ 黑化箱(陷阱扣200~1000金) - 调度器自动投放 + 管理员手动投放 - CurrencySource 新增 MYSTERY_BOX / MYSTERY_BOX_TRAP 枚举 - 婚姻状态弹窗(工具栏「婚姻」按钮): - 工具栏「呼叫」改为「婚姻」,点击打开婚姻状态弹窗 - 动态渲染三种状态:单身 / 求婚中 / 已婚 - 被求婚方可直接「答应 / 婉拒」;已婚可申请离婚(含二次确认) ## 优化修复 - frame.blade.php:Alpine.js CDN 补加 defer,修复所有组件初始化报错 - scripts.blade.php:神秘箱子暗号主动拦截(不依赖轮询),领取成功后弹 chatDialog 展示结果,更新金币余额 - MysteryBoxController:claim() 时 change() 补传 room_id 记录来源房间 - 后台游戏管理页(game-configs):投放箱子按钮颜色修复;弹窗替换为 window.adminDialog - admin/layouts:新增全局 adminDialog 弹窗组件(替代原生 alert/confirm) - baccarat-panel:FAB 拖动重构为 Alpine.js baccaratFab() 组件,与 slotFab 一致 - GAMES_TODO.md:神秘箱子移入已完成区,补全修复记录
2026-03-03 19:29:43 +08:00
'normal_reward_min' => 500, // 普通箱最低奖励
'normal_reward_max' => 2000, // 普通箱最高奖励
'rare_reward_min' => 5000, // 稀有箱最低奖励
'rare_reward_max' => 20000, // 稀有箱最高奖励
'trap_penalty_min' => 200, // 黑化箱最低惩罚
'trap_penalty_max' => 1000, // 黑化箱最高惩罚
'trap_chance_percent' => 10, // 黑化箱触发概率(%
],
],
// ─── 赛马竞猜 ────────────────────────────────────────────
[
'game_key' => 'horse_racing',
'name' => '赛马竞猜',
'icon' => '🐎',
'description' => '系统定期举办赛马,用户在倒计时内下注,按注池赔率结算,跑马过程 WebSocket 实时播报。',
'enabled' => false,
'params' => [
'interval_minutes' => 30, // 多少分钟一场
'bet_window_seconds' => 90, // 押注窗口(秒)
'race_duration' => 30, // 跑马动画时长(秒)
'horse_count' => 4, // 参赛马匹数量
'min_bet' => 100, // 最低押注
'max_bet' => 100000, // 最高押注
'house_take_percent' => 5, // 庄家抽水(%
],
],
// ─── 神秘占卜 ────────────────────────────────────────────
[
'game_key' => 'fortune_telling',
'name' => '神秘占卜',
'icon' => '🔮',
'description' => '每日一次免费占卜,系统生成玄学签文并赋予当日加成效果(幸运/倒霉)。额外占卜消耗金币。',
'enabled' => false,
'params' => [
'free_count_per_day' => 1, // 每日免费次数
'extra_cost' => 500, // 额外次数消耗金币
'buff_duration_hours' => 24, // 加成效果持续时间
'jackpot_chance' => 5, // 上上签概率(%
'good_chance' => 20, // 上签概率(%
'bad_chance' => 20, // 下签概率(%
'curse_chance' => 5, // 大凶签概率(%
],
],
// ─── 钓鱼小游戏 ──────────────────────────────────────────────
[
'game_key' => 'fishing',
'name' => '钓鱼小游戏',
'icon' => '🎣',
'description' => '消耗金币抛竿,等待浮漂下沉后点击收竿,随机获得奖励或惩罚。持有自动钓鱼卡可自动循环。',
'enabled' => false,
'params' => [
'fishing_cost' => 5, // 每次抛竿消耗金币
'fishing_wait_min' => 8, // 浮漂等待最短秒数
'fishing_wait_max' => 15, // 浮漂等待最长秒数
'fishing_cooldown' => 300, // 收竿后冷却秒数
],
],
// ─── 双色球彩票 ──────────────────────────────────────────────
[
'game_key' => 'lottery',
'name' => '双色球彩票',
'icon' => '🎟️',
'description' => '每日一期选3红球(1-12)+1蓝球(1-6),按奖池比例派奖,无一等奖滚存累积。',
'enabled' => false,
'params' => [
// ── 开奖时间 ──
'draw_hour' => 20, // 每天几点开奖24小时制
'draw_minute' => 0, // 几分开奖
'stop_sell_minutes' => 2, // 开奖前几分钟停止购票
// ── 购票限制 ──
'ticket_price' => 100, // 每注金币
'max_tickets_per_user' => 50, // 每期单人最多购票注数
'max_tickets_per_buy' => 10, // 单次最多购买注数
// ── 奖池分配比例(%)──
'pool_ratio' => 70, // 购票金额进奖池比例
'prize_1st_ratio' => 60, // 一等奖占奖池%
'prize_2nd_ratio' => 20, // 二等奖占奖池%
'prize_3rd_ratio' => 10, // 三等奖占奖池%
'carry_ratio' => 10, // 强制滚存比例%
// ── 固定小奖 ──
'prize_4th_fixed' => 150, // 四等奖固定金额/注
'prize_5th_fixed' => 50, // 五等奖固定金额/注
// ── 超级期 ──
'super_issue_threshold' => 3, // 连续几期无一等奖触发超级期
'super_issue_inject' => 20000, // 超级期系统注入金额上限
],
],
];
foreach ($games as $game) {
GameConfig::updateOrCreate(
['game_key' => $game['game_key']],
$game,
);
}
}
}