3.9 KiB
3.9 KiB
FTC 票务系统
基于 CC:Tweaked 的票务解决方案:售票机与闸机,以及用于站点/线路/票价管理与票务事件日志的 Web 控制台。
功能
- 售票机:界面与语音引导、打印、软盘 TICKET 写入、售票统计上传
- 闸机:软盘票检、红石控制、状态上传(进站/出站)
- 控制台:管理站点/线路/票价、查看票务日志/事件、支持在区间中插入站点
- 每次售票生成唯一票号;打印前检查纸量与出纸槽
组件
Lua/TicketMachine/startup.lua:售票机主程序Lua/TicketMachine/gate.lua:闸机主程序(进站/出站)Lua/TicketMachine/web/server.js:后端 APILua/TicketMachine/web/main.js:前端主逻辑Lua/TicketMachine/web/app.js:前端 API 封装Lua/TicketMachine/web/console.js:控制台脚本
环境要求
- 安装 CC:Tweaked 模组的 Minecraft
- 售票机需要监视器(可选)、音响、打印机与软盘驱动器
- Web 控制台需要 Node.js 16+
部署
售票机
- 编辑
startup.lua中的CURRENT_STATION_CODE - 摆放相关外设;如使用中心服务器,配置
API_ENDPOINT.txt
闸机
- 编辑
gate.lua中CURRENT_STATION_CODE与GATE_TYPE(0=进站,1=出站) - 摆放相关外设并接好门控红石
控制台
- 安装依赖并启动服务;可在
web/data/*.json或界面中管理数据
使用
- 售票:选择站点、类型与次数,支付后进入打印检查,随后打印并写盘
- 验票:插入软盘后自动校验并开门;多程票在扣次并更新后自动弹盘
- 控制台:管理基本数据;在区间 Shift-点击可插入站点
开发建议
- 注释保持英文、简洁;Lua 外设调用建议加
pcall - Web API 路由在
/api,持久化文件位于web/data/*
贡献
- 欢迎提 Issue 与 PR;改动尽量聚焦且最小化,遵循现有风格
许可证
- 使用 MIT 许可;详见
LICENSE
安装与运行
前置条件
- 安装
Node.js 16+(推荐 18+)
安装依赖
- 在项目根目录执行:
npm install
启动 Web 控制台
- 方式一(根目录):
node web/server.js - 方式二(进入子目录):
cd web && node server.js - 默认访问地址:
http://localhost:23333/(可通过环境变量HOST、PORT覆盖)
首次配置
- 进入“系统设置”,设置
API 地址(默认同源/api)。 - 也可编辑
web/data/config.json中的api_base。
数据导入/导出
- 在控制台界面使用“导入数据 / 导出数据”按钮;导出文件名为
ftc-ticket-admin-backup.json。
设备部署(CC:Tweaked)
- 售票机:将
Lua/TicketMachine/startup.lua置于电脑根目录作为开机自启,配置CURRENT_STATION_CODE;按需摆放监视器、音响、打印机、软盘驱动器。 - 闸机:将
Lua/TicketMachine/gate.lua部署到闸机电脑,设置CURRENT_STATION_CODE与GATE_TYPE(0=进站,1=出站),接好门控红石。 - 若使用中心服务器:在设备侧写入 API 基址(如通过
API_ENDPOINT.txt或程序内配置)。
常见问题
- 端口被占用:以
PORT=8080 node web/server.js方式指定端口。 - 跨域访问:后端已启用 CORS;如需跨源部署,请正确设置
api_base。