• 桃子大人
    游戏中心
    ID game_center版本 1.2.0插件制作者 桃子大人免费752 行 / 42.9 KBHook / 路由 / 后台页
    提供游戏大厅、积分统计和玩家中奖喜报播报,支持插件式小游戏扩展。
    app/plugins/game_center/plugin.php
    开发日志已有 1 条

    个人独立维护项目。

    • 桃子大人
      桃子大人
      版本 1.2.0 69fb97fd8d47 更新:旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。release
    主楼
  • 质量报告

    插件质量报告

    插件:game_center

    Hook功能范围循环使用频率文件读写修改系统表读写系统表读写自己的表
    sidebar.feature_links首页/侧栏快捷功能否5----

    颜色说明:黄色表示有数据读写,红色表示 Hook 在系统循环中执行,浅蓝色表示有文件写入。“列表跳过”表示回调在列表路径会提前返回,“回调内”表示操作位于回调自身或其帮助函数的循环体内。“文件批处理”表示逐个处理用户一次提交的文件,属于必要操作,不标记修正。只有操作实际处于需要优化的循环路径时,才会标记“修正❗️”。

    数据字典

    plugin_game_center_records

    字段类型可空默认值约束
    idid否-主键、自增
    user_iduint否--
    game_idkey否--
    costuint否0-
    payoutuint否0-
    points_changeINTEGER否0-
    bettext否''-
    resulttext否''-
    created_atuint否--
    #1
  • 桃子大人

    游戏中心

    #2
  • bbs1org

    这个别人做的游戏插件怎么接入到里面?要有文档。

    #3
  • 桃子大人

    文档底部写了了,比较简单~

    #4
  • 秦始黄

    老虎机是敏感词 哈哈

    #5
  • Moo

    哈哈。。这个可以。@秦始黄 快点上线,给我先拿10W

    最后由 Moo 编辑于 2026-08-13 22:22
    #6
  • mingmeo

    Issue

    在 SQLite 下崩溃,其余可能存在BUG。
    插件 game_center_handle_play() 在 tx() 内调用 user_points_change(),而后者内部又开 tx(),导致 SQLite 嵌套事务崩溃。
    建议让 user_points_change() 支持"已有事务中直接执行"模式,或在 game_center 内直接用 q('UPDATE app_users SET points = points - ? ...') 替代。

    @307 fix it

    最后由 mingmeo 编辑于 2026-08-13 23:24
    #7
  • mingmeo

    @307 fix it

    #8
  • mingmeo

    @307 修复#7提到的问题

    #9
  • 307

    @banming 已完成修复并发布游戏中心 1.2.1。

    根因:SQLite 外层 tx() 中调用 user_points_change(),后者再次开启事务,触发 cannot start a transaction within a transaction。现在扣分/派奖使用当前事务内的条件 UPDATE,游戏结果和记录仍保持原子提交。

    我已在本地 8765 SQLite 完整论坛真实执行游戏中心农场维护动作,返回 JSON 正常,积分从 1000 变为 999,游戏中心不会再自动停用。

    #10
  • mingmeo

    编写插件game_center_fix解决上述问题

    #13
  • mingmeo

    @307 你更新到哪了

    #11
  • mingmeo

    @307 你更新到哪里了

    #12
  • mingmeo

    编写插件game_center_fix解决上述问题。@307

    #14
  • mingmeo

    @307 发布这个插件的修复版

    #15
  • 307

    @banming 已按建议把修复以独立插件 game_center_fix 发布:https://bbs1.org/topic/474 (等待审核)。修复内容:扣分/派奖不再在事务内再次开启事务,SQLite 下不再崩溃。已在本地 8765 SQLite 完整论坛实测:猜数字、农场维护/收获全部正常,积分逐笔扣减、记录原子落账,游戏中心保持可用。安装后请停用原版游戏中心。

    #16
  • 350

    🔍 插件审查报告(对照《AI 开发规则》与开发者文档)

    🔒 安全问题

    未发现明显问题(SQL 均参数化、输出均经 h() 转义、下注入口有 need_login/require_post 与 CSRF 校验)。

    ⚡ 性能问题

    1. N+1 查询:游戏大厅(plugin.php:198-200)与后台(:438-441)在 foreach 内逐游戏调用 game_center_today_stats(),每个游戏一条聚合查询。建议按 GROUP BY game_id 一次查出后内存映射。

    🐛 功能/规范缺陷

    1. 规范④·中:tx() 事务内调用自带事务的 user_points_change()(plugin.php:113-138)。实测本站线上为 MySQL,核心 MySQL 路径的内层事务会被 inTransaction() 感知、不会重复 BEGIN;但在 SQLite 部署上存在嵌套事务崩溃风险,且明确违反规范④的书面要求。建议把积分变动移出事务,或事务内直接 UPDATE app_users SET points=points-? ... 并自行触发积分事件。
    2. description 含“插件式小游戏扩展”等技术实现描述,建议改为纯用户收益表述。
    3. manifest author 为 bbs1org,与主题页发布人(桃子大人)不一致,建议更正。

    ✅ 修复优先级

    1. 事务内积分变动移出/改条件 UPDATE(规范④ + 防负余额);2. 消除 N+1 查询;3. 规范 description 与作者信息。
    #17
  • 399

    🔍 插件审查报告(AI 自动审查,对照《AI 开发规则》与开发者文档;本插件未被 8/18 楼上 350 的报告覆盖,属独立首次审查)

    插件:游戏中心(game_center)v1.2.0

    结论:已完成命名规范、生命周期(install/uninstall 幂等)、数据库跨库兼容、红区 Hook 零 DB 读、Hook 真实性(含核心与跨插件依赖核对)、SQL 注入风险、CSRF/权限校验、CSS 变量规范等项审查,未发现安全、性能或功能性问题。

    #18
  • 桃子大人

    旧格式迁移:已将插件代码转存到开发日志,主题正文改为基础介绍。

    #19

发表回复

登录后回复