跳到主要内容

为什么选择星月造物

抽奖插件最怕的不是「不够华丽」,而是出错:动画播到一半关服,奖励没了;扣了钥匙却没抽到;界面上写 1%,实际根本不是 1%。 星月造物在设计时先把这些问题处理掉,再去做动画和界面。下面每一点都是插件实际的行为。

奖励不会丢​

情况星月造物怎么处理
抽奖结果什么时候决定点下「单抽」的那一刻就抽好,先写进数据库再播动画。保底次数、获得次数、抽奖记录与一条「待发放」记录在同一个数据库事务里一起写入,不会只写一半。
动画播到一半玩家下线立刻结束动画并发放奖励(寄到邮箱或放进背包)。
动画播到一半服务器关闭关服时会先把所有正在播放的动画结束、把奖励发出去,再关闭插件。
服务器崩溃 / 断电数据库里的「待发放」记录还在,玩家下次上线时自动补发,并提示「补发你上次在 … 未完成发放的抽奖奖励」。使用 MySQL 时,玩家上线哪个子服都能补发,而且每一笔只会被一个子服领走。
背包满了安装星月邮箱时奖励本来就在邮箱里;直接放背包时,放不下的部分暂存起来,用 /sc stash 或预览界面的按钮领取(也可以改成掉在脚下)。
寄邮件失败自动改为直接放进背包,玩家已离线时存进暂存。

详见 奖励发放。

扣费不会扣错​

  • 先检查、后扣除:金币、点券、钥匙、宝箱物品全部检查足够后才一起扣;任何一项扣失败,已经扣掉的会退回。
  • 抽不满就不抽:奖品有每人上限时,扣费前会先算玩家还能抽到几个;剩下的不够这次的抽数(例如只剩 3 个却要十连)就整次不抽、不扣费,并提示改用单抽。
  • 一次只能抽一次:动画播放中再点抽奖会提示「你的抽奖动画还在进行中」;菜单点击与打开奖池都有连点保护(默认 250 毫秒)。
  • 每日上限按次数算:十连算 10 次;今天剩下的次数不够整次十连时,整次不抽、也不扣费。

概率说到做到​

  • 预览里的概率就是这一抽的真实概率:已经算进玩家当前的软保底加成、硬保底、每人上限(达到上限的奖品显示 0%)与奖品权限。 玩家越接近保底,看到的终极大奖概率就越高,触发硬保底的那一抽直接显示 100%。
  • 软保底保持比例:软保底只提高「终极大奖这一组」的总概率,组内与组外各奖品之间的比例不变,不会让某个普通奖品莫名消失。
  • 十连保底不改变其他结果:十连里没有达到指定稀有度的奖品时,只替换最后一个非终极大奖的结果。
  • 结果在抽中时就固定:抽中的奖品会复制一份保存。动画播放中管理员修改了奖品,玩家拿到的仍然是抽中时的内容。
  • 可以核对:/sc stats <奖池> 列出每个奖品的实际出现率与设定概率。

完整的算法与范例见 概率与保底。

编辑不用重启​

  • 编辑器里的每一次修改都立即保存到 crates/<奖池>.yml(先写暂存文件再替换,不会存出半个文件),不需要 /sc reload。
  • 保存后,正在打开这个奖池预览的玩家画面、抽奖方块上的标题会立刻更新;所有在线玩家背包里的宝箱物品也会更新成新的名称、外观与奖励列表。
  • 钥匙与宝箱物品记录的是奖池 ID,不是名称:之后改了钥匙外观、改了奖池显示名称,之前发出去的钥匙和宝箱仍然能用。
  • 其他插件做的物品(没有星月造物标记)也能设为钥匙,只要和钥匙模板「相同」就会被认得。

公平与安全​

  • 每人上限:奖品可以设「每位玩家最多获得几次」。达到后这个玩家就不会再抽到它,预览显示「已达获得上限」。
  • 奖品权限:奖品可以要求权限,没有权限的玩家抽不到,也不会占用他的概率。
  • 庆祝烟花不伤人:揭晓时放的烟花不会造成伤害。
  • 3D 动画只给自己看:3D 动画的展示实体只有抽奖的玩家看得到,不会保存到世界里,结束后立刻清除。
  • 聊天输入不外泄:编辑器要求输入数字或文字时,输入的那一行不会发到公屏,CMI、EssentialsChat 等聊天插件也一样。

跨服就是跨服​

使用 MySQL 时,保底次数、每个奖品的获得次数、每日次数、抽奖记录、暂存奖励、待补发记录全部共享: 玩家在一服抽到第 40 抽,到二服接着抽就是第 41 抽。终极大奖与公告奖品会带上子服名称同步公告到其他子服。见 跨服。

换过来很容易​

原本使用 YunYueLottery?/sc import yunyuelottery 会导入奖池、奖品(含物品、权重、终极大奖、指令)、钥匙物品、抽奖方块与玩家的保底次数。见 从 YunYueLottery 导入。