统一卡牌游戏插件,支持 21 点、斗牛、炸金花三种扑克牌玩法。puppeteer 渲染 HTML 界面,群聊发送图片交互。

在 Yunzai 根目录下执行:
git clone --depth=1 https://github.com/Cat-bl/card-game-plugin plugins/card-game-plugin
| 游戏 |
发起命令 |
牌数 |
玩法 |
| 21 点 |
#21点 / #21 |
2+ 张 |
与庄家比牌,不超过 21 点 |
| 斗牛 |
#斗牛 / #牛牛 |
5 张 |
与庄家比牌,3 张凑 10 的倍数 |
| 炸金花 |
#炸金花 / #金沙 |
3 张 |
玩家互比,盲注/明注下注博弈 |
三个游戏独立管理,同一群可存在不同类型的游戏。
| 指令 |
说明 |
#卡牌帮助 |
查看卡牌游戏总览和快速开始 |
#卡牌更新 / #卡牌强制更新 |
更新插件(主人) |
#21再来一局 / #斗牛再来一局 / #炸金花再来一局 |
结算后继续下一轮 |
#21点 → 加入 → 开始 → 下注 → 叫牌/停牌/双倍/保险 → 庄家回合 → 结算
| 指令 |
说明 |
#21点 / #21 |
发起游戏 |
#加入21点 |
加入游戏 |
#退出21点 |
等待阶段退出 |
#开始21点 |
开始并进入下注 |
#21下注 N |
下注 N 筹码(10~500) |
#21默认下注 |
使用默认赌注(50) |
#21叫牌 |
再要一张牌 |
#21停牌 |
停止要牌 |
#21双倍 |
双倍下注并只再要一张牌 |
#21保险 |
庄家明牌为 A 时可买保险 |
#21点状态 |
查看游戏状态 |
#21点帮助 |
查看详细规则 |
#21点结束 |
强制结束(发起人/主人) |
#21再来一局 |
结算后继续下一轮 |
- 牌面值:A=1/11, 2~10=面值, J/Q/K=10
- 初始 2 张牌,可选叫牌至停牌或爆牌(超过 21 点)
- 黑杰克(A+K/Q/J/10):1.5 倍赔付
- 庄家 17 点以上停牌,玩家爆牌即输
- 双倍下注后只能再要一张牌
#斗牛 → 加入 → 开始 → 下注 → 自动发牌结算
| 指令 |
说明 |
#斗牛 / #牛牛 |
发起游戏 |
#加入斗牛 |
加入游戏 |
#退出斗牛 |
等待阶段退出 |
#开始斗牛 |
开始并进入下注 |
#斗牛下注 N |
下注 N 筹码(10~500) |
#斗牛默认下注 |
使用默认赌注(50) |
#斗牛状态 |
查看游戏状态 |
#斗牛帮助 |
查看详细规则 |
#斗牛结束 |
强制结束(发起人/主人) |
#斗牛再来一局 |
结算后继续下一轮 |
- 每人发 5 张牌,与庄家比较
- 从 5 张牌中找出 3 张点数之和为 10 的倍数(有牛)
- 剩余 2 张点数之和取个位数 = 牛几
- 无任何 3 张和为 10 倍数 = 无牛
- A=1, 2~10=面值, J/Q/K=10
| 牌型 |
倍率 |
说明 |
| 五小牛 |
5 倍 |
5 张牌均 ≤4 且总和 ≤10 |
| 炸弹 |
4 倍 |
4 张相同点数 |
| 五花牛 |
4 倍 |
5 张全是 J/Q/K |
| 牛牛 |
3 倍 |
3 张 10 倍 + 2 张 10 倍 |
| 牛七 ~ 牛九 |
2 倍 |
|
| 牛一 ~ 牛六 |
1 倍 |
|
| 无牛 |
输 |
|
#炸金花 → 加入 → 开始(发牌+底注)→ 轮流操作(看牌/跟注/加注/弃牌/比牌)→ 最后一人获胜
| 指令 |
说明 |
#炸金花 / #金沙 |
发起游戏 |
#加入炸金花 |
加入游戏 |
#退出炸金花 |
等待阶段退出 |
#开始炸金花 |
开始游戏(发牌+底注) |
#看牌 |
查看自己手牌(私信发送),进入明注状态 |
#跟注 |
支付最低注额继续游戏 |
#加注 N |
加注到 N 筹码 |
#弃牌 |
放弃本局 |
#比牌 @某人 |
与指定玩家比牌,输者出局 |
#炸金花状态 |
查看游戏状态 |
#炸金花帮助 |
查看详细规则 |
#炸金花结束 |
强制结束(发起人/主人) |
#炸金花再来一局 |
结算后继续下一轮 |
- 每人发 3 张牌,玩家之间互相比牌
- 盲注(未看牌)下注基数较低,明注(看过牌)下注额翻倍
- 每轮可选择:看牌(私信发手牌)→ 跟注 → 加注 → 弃牌 → 比牌(@ 某人)
- 比牌输者出局,仅剩 1 人时自动获胜
- 达到最大回合数自动强制比牌
| 牌型 |
说明 |
| 豹子 |
三张相同点数,AAA 最大 |
| 同花顺 |
同花 + 顺子 |
| 同花 |
三张同花色 |
| 顺子 |
三张连续点数(A23 最小,QKA 最大) |
| 对子 |
两张相同 + 一张散牌 |
| 散牌 |
无关联的三张牌 |
特殊规则:**2·3·5(不同花色)**克制豹子 AAA。
编辑 config_default/config.yaml(或覆盖至 config/config.yaml),支持热更新:
blackjack:
minPlayers: 1
maxPlayers: 6
startingChips: 1000
defaultBet: 50
blackjackPayout: 1.5
dealerStandOn: 17
# ...
douniu:
minPlayers: 1
maxPlayers: 6
startingChips: 1000
defaultBet: 50
# ...
zhajinhua:
minPlayers: 2
maxPlayers: 8
startingChips: 1000
ante: 10 # 底注
blindStake: 10 # 盲注基数
seenStake: 20 # 明注基数
maxRounds: 20 # 最大回合数
turnTimeout: 60 # 回合超时(秒)
# ...
card-game-plugin/
index.js # 动态加载 apps/*.js
model/
config.js # YAML 配置 + 热更新
deck.js # 共享牌组工具
render.js # puppeteer 截图适配
apps/ # 命令处理
blackjack.js # 21点
douniu.js # 斗牛
zhajinhua.js # 炸金花
update.js # 卡牌更新 + 卡牌帮助
games/ # 游戏引擎(每个游戏一个目录)
blackjack/ engine.js, render.js
douniu/ engine.js, render.js
zhajinhua/ engine.js, render.js
resources/html/ # HTML 模板
help.html # 插件总览帮助
blackjack/ chat.html, help.html
douniu/ chat.html, help.html
zhajinhua/ chat.html, help.html
扩展新游戏只需创建 games/<name>/ + apps/<name>.js + resources/html/<name>/,无需修改共享层。
- 原
blackjack-plugin 迁移而来,21 点命令和玩法完全保留
- 三个游戏的指令完全独立(
#21... / #斗牛... / #炸金花...),不会产生命令冲突