跳到主要内容

概率与保底

这一页完整说明一次抽奖是怎么决定结果的。所有数字范例都使用插件自带的示例奖池 example(星辉宝箱)。

示例奖池​

奖品权重稀有度终极大奖概率
p1 星辉面包 ×1640普通40%
p2 铁锭 ×830普通30%
p3 金锭 ×615稀有15%
p4 绿宝石 ×58稀有8%
p5 星辉钻石 ×35史诗5%
p6 星陨合金1.5传说✦1.5%
p7 神话 · 星核0.5神话✦0.5%

保底设定:hard: 50、soft-start: 35、soft-step: 5、ten-guarantee: rare。

1. 权重换算概率​

概率 = 奖品的权重 ÷ 这位玩家这一抽能抽到的所有奖品的权重总和。

上表的权重总和刚好是 100,所以权重就等于百分比。权重不必加起来等于 100,写 4、3、2、1 一样可以(总和 10,概率 40% / 30% / 20% / 10%)。

「能抽到的奖品」会先排除:

排除的奖品说明
权重 0只展示,永远抽不到
玩家没有奖品的 permission对这位玩家来说这个奖品不存在,其他奖品的概率按比例变大
玩家已经达到奖品的 limit同上

例:p7 设了 limit: 1,玩家已经拿过一次。之后他的权重总和变成 99.5,p6 的概率是 1.5 ÷ 99.5 ≈ 1.51%,p1 是 40 ÷ 99.5 ≈ 40.2%。

2. 保底次数​

每位玩家在每个奖池都有一个保底次数:距离上一次抽到终极大奖(grand: true)已经抽了几次。

  • 每抽一次(十连算 10 次)+1;抽到终极大奖时归零。
  • 只有终极大奖会让它归零,史诗、传说等稀有度本身不影响保底。
  • 自选奖池 不影响保底次数。
  • 预览界面的「保底进度」、变量 %starcrate_pity_<奖池>% 显示的就是它;管理员可以用 /sc pity <玩家> <奖池> [次数] 查看或修改。

3. 硬保底(pity.hard)​

距离上一次终极大奖的第 hard 抽,必定是终极大奖。

hard: 50:连续 49 抽都没出终极大奖,第 50 抽只会在终极大奖之中抽(按它们自己的权重):

奖品权重第 50 抽的概率
p6 星陨合金1.51.5 ÷ 2 = 75%
p7 神话 · 星核0.50.5 ÷ 2 = 25%
其他奖品—0%

保底触发的奖品在抽奖结果界面会标示「✦ 保底触发」。

  • 只要这位玩家还有能抽到的终极大奖,硬保底就有效;终极大奖全部达到每人上限(或他没有权限)时,硬保底不会触发。
  • 调低 hard 时,保底次数已经超过新数值的玩家,下一抽就会触发。

4. 软保底(pity.soft-start / pity.soft-step)​

软保底让终极大奖的概率在接近硬保底时逐抽提高,玩家不会一直到第 50 抽才「突然」出货。

设这一抽是距离上一次终极大奖的第 n 抽(也就是保底次数 + 1)。当 n > soft-start 时:

终极大奖这一组的总概率 = 原本的总概率 + (n − soft-start) × soft-step 个百分点(最高 100%)
  • 提高的是「所有终极大奖加起来」的总概率;终极大奖之间的比例不变,其他奖品之间的比例也不变,其他奖品按比例一起变小。
  • soft-start 与 soft-step 都要大于 0 才有作用;奖池里没有终极大奖,或全部都是终极大奖时没有作用。
  • 硬保底的那一抽仍然是 100% 终极大奖。

示例奖池(终极大奖原本合计 2%,soft-start: 35、soft-step: 5):

第 n 抽终极大奖合计p6 星陨合金p7 神话 · 星核p1 星辉面包
1 ~ 352%1.5%0.5%40%
362 + 1 × 5 = 7%5.25%1.75%40 × 93/98 ≈ 37.96%
402 + 5 × 5 = 27%20.25%6.75%40 × 73/98 ≈ 29.80%
452 + 10 × 5 = 52%39%13%40 × 48/98 ≈ 19.59%
492 + 14 × 5 = 72%54%18%40 × 28/98 ≈ 11.43%
50硬保底 100%75%25%0%

(p1 那一栏:普通奖品原本占 98%,提高后只剩「100% − 终极大奖合计」,按原本的比例分配。)

如果 soft-step 设得很大(例如 soft-start: 10、soft-step: 30),第 14 抽就会到达 2 + 4 × 30 = 122% → 封顶 100%,等于提前保底。

5. 十连​

十连就是连续抽 10 次:每一抽都会照上面的规则重新计算(保底次数在十连中途一样会累加、触发、归零)。 例如保底次数是 45 时十连,第 5 抽就是第 50 抽,必定是终极大奖,后面 5 抽从 0 重新累计。

设了每人上限的奖池​

抽奖前(扣费之前)会先算出这位玩家还能抽到几个奖品:所有他抽得到的奖品,「上限 − 已获得次数」加起来(只要有一个奖品没有上限,就是无限)。

剩下可抽的数量结果
0提示「这个奖池里已经没有你能抽到的奖品了」,不抽、不扣费
少于这次的抽数(例如剩 3 个却要十连)提示「这个奖池你最多只能再抽 3 次(其余奖品已达获得上限),请改用单抽」(messages.yml 的 capacity),不抽、不扣费
足够照常抽奖

所以十连一定会抽满 10 个,不会出现「付了十连的钱却只拿到几个」的情况。

6. 十连保底(pity.ten-guarantee)​

ten-guarantee: rare:十连的 10 个结果里,如果没有任何一个是「稀有」或更稀有的奖品,就把最后一个不是终极大奖的结果换掉, 换成从「稀有以上」的奖品中按权重抽出的一个。被换上的奖品在结果界面标示「✦ 十连保底」。

示例奖池里,「稀有以上」的奖品是 p3 ~ p7(权重合计 30),所以替换时:

奖品权重被换上的概率
p3 金锭1550%
p4 绿宝石826.67%
p5 星辉钻石516.67%
p6 星陨合金 ✦1.55%
p7 神话 · 星核 ✦0.51.67%

一次十连 10 抽全部是普通(每抽 70%)的机会约为 0.7¹⁰ ≈ 2.8%,也就是大约每 35 次十连会有 1 次靠十连保底补上。

细节:

  • 稀有度高低看 rarities.yml 的排列顺序(越下面越稀有),见 稀有度。
  • 判断「有没有达到」只看稀有度,不看是不是终极大奖:一个稀有度低于保底等级的终极大奖不算数。
  • 替换时会遵守每人上限与奖品权限;如果没有任何符合条件的奖品可以换,就不替换。
  • 换上的如果是终极大奖,保底次数会按最后的 10 个结果重新计算(等于这一抽抽到了终极大奖)。
  • 奖池没写 ten-guarantee 时,使用 config.yml 的 defaults.ten-guarantee。

7. 预览显示的概率​

奖池开启「显示概率」(show-chance: true)时,玩家预览界面的每个奖品下方会显示「概率 x%」。这个数字是这位玩家下一抽的真实概率:

  • 已经排除他没有权限的奖品、已经达到上限的奖品(这些显示 0%);
  • 已经算进他目前的软保底加成;
  • 下一抽会触发硬保底时,终极大奖显示合计 100%,其他奖品显示 0%。

所以在示例奖池里,保底次数 39 的玩家打开预览,会看到 p6 显示 20.25%、p1 显示 29.80%(对应上面软保底表的第 40 抽)。 十连保底不会反映在预览概率里(它只在十连全部不达标时才介入)。

小数位数:10% 以上显示 1 位小数,0.01% ~ 10% 显示 2 位,更小的显示 4 位。

其他地方显示的是「设定概率」

编辑器、宝箱物品的奖励列表、/sc stats 里的「设定」概率,都是单纯的「权重 ÷ 全部奖品权重总和」,不含保底加成,也不考虑上限与权限。

8. 核对实际出现率​

/sc stats example

列出这个奖池每个奖品实际被抽到的次数与比例,旁边附上设定概率:

星辉宝箱 统计:共 1200 次 · 37 名玩家
▪ 星辉面包 470 次 (实际 39.2% · 设定 40.0%)
▪ 铁锭 352 次 (实际 29.3% · 设定 30.0%)
…

终极大奖的实际比例通常会比设定概率高一些,这是保底的效果。统计来自抽奖记录,会受 config.yml 的 history-keep-days 影响(超过天数的记录会被清除)。

9. 跨服与保底​

使用 MySQL 时,保底次数、每个奖品的获得次数(每人上限)、每日次数在所有子服共享。玩家在一服抽到保底次数 40,到二服接着抽就是第 41 抽。见 跨服。