Skip to content

e5sub/Text-Legend

Repository files navigation

文字游戏(网页版文字版)

网页文字版游戏,支持 SQLite / MySQL,内置 GM 后台、活动系统、宠物系统、法宝系统、修真玩法、积分商城、邀请返利、首充福利等。

开源协议

本项目当前采用 PolyForm Noncommercial License 1.0.0

  • 这是“源码可见”协议,不属于 OSI 意义上的开源协议
  • 允许查看源码、学习、非商业使用、非商业修改与分发
  • 不允许将本项目或其衍生版本用于商业用途(包括直接商用、收费服务、商业化开服等)

协议正文见仓库根目录 LICENSE,或访问:

  • https://polyformproject.org/licenses/noncommercial/1.0.0/

项目特点

  • 网页端 + Socket 实时战斗(同时提供安卓客户端目录)
  • 支持 SQLite / MySQL
  • GM 后台可配置大量玩法参数(BOSS、修炼、法宝、活动、掉率等)
  • 多区服(realm)支持
  • 智能挂机、SVIP 离线托管(服务端托管,重启后可恢复)
  • 行会、沙巴克、交易、寄售、邮件、宠物、法宝、修真塔等完整系统

赞赏

支付宝 微信
alipay wechat

快速启动

Docker(SQLite)

docker build -t text-legend .
docker run -p 3000:3000 \
  -e DB_CLIENT=sqlite \
  -e DB_FILENAME=/app/data/game.sqlite \
  -e DB_POOL_MAX=1 \
  -e SQLITE_WAL=true \
  -e SQLITE_SYNCHRONOUS=NORMAL \
  -e ADMIN_BOOTSTRAP_SECRET=change_me \
  -e ADMIN_BOOTSTRAP_USER=admin_account \
  -v %cd%/data:/app/data \
  text-legend

Docker Compose(SQLite)

docker compose up --build

Docker Compose(MySQL)

docker compose -f docker-compose.mysql.yml up --build

本地运行(Node.js)

npm install
node src/index.js

默认端口:3000

  • 游戏:http://localhost:3000/
  • 后台:http://localhost:3000/admin/

配置说明(环境变量)

数据库

  • DB_CLIENTsqlitemysql
  • DB_FILENAME:SQLite 文件路径
  • DB_HOST / DB_PORT / DB_USER / DB_PASSWORD / DB_NAME:MySQL 连接信息
  • DB_POOL_MAX:数据库连接池大小(SQLite 建议 1
  • DB_SLOW_QUERY_LOG:是否开启慢查询日志(默认开启)
  • DB_SLOW_QUERY_MS:慢查询阈值毫秒(默认 mysql=200sqlite=500

SQLite 优化(仅 SQLite 生效)

  • SQLITE_WAL:是否启用 WAL(默认 true
  • SQLITE_SYNCHRONOUS:同步模式(默认 NORMAL,可选 FULL / EXTRA

服务与后台

  • PORT:服务端口(默认 3000
  • PUBLIC_BASE_URL:站点对外访问地址,例如 https://example.com,用于邮件中的找回密码链接
  • ADMIN_PATH:后台路径(默认 admin
  • ADMIN_BOOTSTRAP_SECRET:初始化 GM 密钥
  • ADMIN_BOOTSTRAP_USER:首次自动提升为 GM 的账号名
  • LOG_COLOR:是否启用控制台彩色日志(默认启用,设为 false 可关闭)

游戏玩法(UI 为主)

当前版本主要通过 UI 操作,不强调命令输入。

基础操作入口

  • 方向移动:点击方向按钮
  • 目标选择:点击怪物/玩家列表项
  • 技能释放:点击技能按钮
  • 自动挂机:点击“挂机/智能挂机”进行配置
  • 背包/宠物/法宝/邮件/寄售/交易:右侧功能按钮进入
  • 角色操作(改名/迁移):点击右上角自己的角色名

已实现的核心系统

  • 职业与技能(战/法/道)
  • 装备、锻造、特效重置、元素属性
  • 行会、队伍、沙巴克攻城
  • 交易、寄售、邮件附件
  • 宠物(打书、合宠、宠物装备、宠物修炼)
  • 法宝(升级、升段、被动/自动触发被动)
  • 修真系统、修真秘境、修真BOSS、诛仙浮屠塔
  • 活动中心、活动积分商城、排行榜结算
  • 首充福利、邀请系统(返利/首充加成)

游戏攻略(新手到中期)

新手起步(1-100级)

  • 先以主线刷怪升级为主,优先保证药水不断
  • 尽快学齐本职业核心技能(技能书可通过掉落、交易、商城获得)
  • 装备前期不用追极品,先凑齐基础属性和等级效率
  • 打开活动中心查看当前活动与积分商城

当前版本有 新人追赶计划(仅未修真玩家生效):

  • <100级:打怪经验 x5
  • 100-200级:打怪经验 x2.5
  • >=201级:恢复正常

说明:只加打怪经验,不加金币;修真后不再享受该加成。

中期成长(100-200级)

优先级建议:

  1. 技能等级与关键技能书
  2. 装备品质(极品随机属性)与基础套装
  3. 锻造等级(提升稳定)
  4. 修炼 / 修炼果(稳定成长)
  5. 宠物与法宝(中后期收益很高)

建议做法:

  • 开启智能挂机,勾选想打的 BOSS 名称(有 BOSS 就打,没 BOSS 会回普通房间刷经验)
  • 有条件加入活跃行会,参与组队和沙巴克
  • 邮件、交易、寄售流转资源时注意保留高品质装备(系统已修复极品/锻造/特效在交易寄售邮件中的丢失问题)

修真与高阶成长(200级后)

  • 200+ 后经验追赶活动结束,核心转为修真、BOSS、法宝、宠物提升
  • 修真BOSS与世界BOSS是关键资源来源(高阶装备、技能书、法宝材料等)
  • 高阶装备请重点关注:基础属性、极品随机百分比、锻造等级、特效质量
  • 法宝建议长期培养(升段收益明显,且被动/自动触发被动会持续增强)

职业建议(简版)

战士

  • 前期靠稳定物理输出推进
  • 中后期吃装备和锻造收益明显
  • 适合打 BOSS、近战爆发

法师

  • 清怪效率高,群攻优势明显
  • 需要注意蓝量与站位
  • 中期开始法宝和高阶技能收益很大

道士

  • 召唤物 + 持续输出 + 辅助能力综合强
  • 智能挂机体验好,适合长期挂机刷资源
  • 宠物/法宝/修炼叠起来后上限很高

智能挂机与 SVIP 离线托管攻略

智能挂机

  • 建议勾选常刷 BOSS 名称
  • 没有 BOSS 时会自动回普通经验房刷怪
  • 普通房间死亡后会自动重新选图(不会长期卡新手图)

SVIP 离线托管(重点)

  • 开启智能挂机后可直接关闭浏览器,由服务器继续托管挂机
  • 托管收益等同在线智能挂机(会打 BOSS、刷经验、拿掉落)
  • 若下线时忘记开启智能挂机,SVIP 会在 5分钟 后自动开始托管
  • 托管状态会显示为 托管(不是离线)
  • 服务器重启后可恢复托管状态(含待托管)

注意:同账号仍限制只能一个角色在线。

宠物系统攻略

宠物修炼

  • 入口:宠物面板 UI(不是命令)
  • 消耗:金币 + 宠物修炼果
  • 宠物修炼果不可交易 / 不可寄售 / 不可邮件 / 不可直接使用
  • 宠物不包含“道术”修炼项(已移除)

宠物培养建议

  • 前期先保证宠物能稳定出战(技能格、基础技能)
  • 中期再投入打书与宠物修炼
  • 高价值技能书与宠物装备优先给主力宠物

马年神兽(特殊宠物)

  • 马年神兽 为特殊神兽宠物(非普通掉落)
  • 自带专属技能 神兽护甲(锁定技能,不会被打书/合宠替换)
  • 专属技能可提升人物防御/魔御(当前为 40%)

法宝系统攻略

  • 法宝被动与自动触发被动均生效
  • 当前被动成长按“阶数”生效(不是法宝等级)
  • 建议长期培养 1-2 件主力法宝,不要平均分散资源
  • 法宝说明已展示每阶加成与自动触发效果数值(触发率、效果值、每段成长等)

修炼系统攻略

  • 人物修炼是长期稳定提升来源,优先补核心生存属性和主属性
  • 规则:人物属性修炼 500级 后继续修炼需要额外消耗 修炼果
  • 修炼、修炼果、锻造增加的属性已调整为“最后加入”,不会再吃百分比加成放大

活动 / 首充 / 邀请系统

活动积分商城

  • 后台配置已简化为:兑换物品 + 所需积分
  • 玩家通过活动中心进入积分商城兑换(奖励走邮件)

首充福利

  • 支持后台可配置(金币、道具、是否赠送马年神兽等)
  • 自动首充按 账号 + 区服 判定(同账号不同区可各触发一次)
  • 后台支持单角色补发、批量补发、单独补发马年神兽

邀请系统

  • 玩家可生成邀请链接邀请新玩家注册
  • 被邀请玩家首次充值可获得额外元宝加成
  • 邀请人可获得元宝返利(比例后台可配置,默认常见为 20%)
  • 后台支持邀请返利补发/失败重试接口

交易 / 寄售 / 邮件注意事项

  • 装备在交易、寄售、邮件附件中会保留:
  • 极品随机属性百分比(base_roll_pct
  • 锻造等级
  • 耐久 / 最大耐久
  • 特效 / 元素属性

寄售规则(当前)

  • 寄售到期时间固定为 48小时
  • 到期自动下架(后台已移除该项设置)

GM 后台

访问:http://localhost:3000/admin/

首次配置 GM(任选其一):

  1. 注册普通账号
  2. 设置环境变量 ADMIN_BOOTSTRAP_SECRETADMIN_BOOTSTRAP_USER
  3. 启动服务后自动提升 GM

或调用 /admin/bootstrap 传入 secret + username

后台可管理(节选)

  • 用户/权限管理
  • 角色数据修改、角色迁移(转移账号)
  • 站内邮件
  • VIP/SVIP、激活码
  • 世界BOSS/特殊BOSS/修真BOSS参数
  • 修炼、锻造、特效重置、宠物、法宝配置
  • 活动积分商城配置
  • 首充福利配置、补发
  • 邀请返利配置与补发
  • 数据备份 / 导入

数据备份与自动备份

系统内置自动备份(默认每日 0 点),备份目录为 data/backup

备份特点

  • 每日自动备份
  • 保留 30 天(自动清理旧备份)
  • 同日仅保留最新备份
  • 支持后台手动导出 / 导入

导入注意事项

  • 导入会覆盖当前数据
  • 建议停服或确保无在线玩家
  • 导入后会强制玩家下线

运维:清理 mob_respawns

mob_respawns 体量过大时,可用内置脚本分批限速清理“已过期且无血量快照”的记录。

先预览(不删除):

npm run db:cleanup-mob-respawns

执行清理(示例:每批 2000、最多 400 轮、每轮间隔 60ms):

npm run db:cleanup-mob-respawns -- --execute --batch-size=2000 --max-rounds=400 --sleep-ms=60

可选限制本次最多删除条数(例如 50000):

npm run db:cleanup-mob-respawns -- --execute --max-delete=50000

按区服清理(例如仅清理 realm_id=1):

npm run db:cleanup-mob-respawns -- --execute --realm-id=1

可多次传参同时清理多个区服:

npm run db:cleanup-mob-respawns -- --execute --realm-id=1 --realm-id=2

一次性清理“历史普通怪”记录(保留 BOSS 相关模板):

先预览:

npm run db:purge-normal-mob-respawns

执行删除(示例):

npm run db:purge-normal-mob-respawns -- --execute --batch-size=2000 --max-rounds=400 --sleep-ms=60

按区服执行:

npm run db:purge-normal-mob-respawns -- --execute --realm-id=1

安卓客户端(原生)

项目包含 android/ 目录(Kotlin + Jetpack Compose),通过 HTTP / Socket API 连接游戏服务器。

构建

  1. 用 Android Studio 打开 android/
  2. 等待 Gradle 同步完成
  3. 运行 app 模块

连接服务器

  • 默认示例:https://cq.071717.xyz/
  • 模拟器本地:http://10.0.2.2:3000/
  • 真机局域网:http://192.168.x.x:3000/

常见问题(FAQ)

1. 为什么 mob_respawns 表很大?

项目会持久化怪物重生倒计时与部分怪物血量快照(用于重启恢复)。当前版本已增加定期清理无效过期记录。

注意:DELETE 后 InnoDB 文件大小不一定立刻缩小;如需回收磁盘空间,可执行:

OPTIMIZE TABLE mob_respawns;

2. 专属BOSS服务器重启会刷新吗?

当前版本不会。已支持重启后按倒计时/血量恢复。

3. 离线托管道士上线后还要重召吗?

当前版本已修复托管接管后的角色重载问题,正常会自动恢复已保存的召唤兽(前提是召唤兽下线前存活且蓝量足够)。

开发说明(简版)

  • 入口:src/index.js
  • 指令与部分战斗逻辑:src/game/commands.js
  • 前端主逻辑:public/app.js
  • 后台前端:public/admin/admin.js
  • 数据库访问:src/db/*

如果你准备二开,建议优先阅读:

  1. src/index.js
  2. src/game/player.js
  3. src/game/state.js
  4. src/game/commands.js
  5. public/app.js

About

文字游戏、文字网游、开源网游、收菜游戏

Resources

License

Stars

Watchers

Forks

Contributors