原 各种游戏汇总
|-原 progression_requirement表不是项目的表https://github.com/ZhengPeiRu21/mod-individual-progression
progression_requirement不是项目的表,我现在需要你先审核下文件pro_race.sh,对这个脚本进行评估,判断是否能做到不完成boss击杀就会锁经验的功能。
https://github.com/ZhengPeiRu21/mod-individual-progression/tree/master/data/sql/world/base
明白,你要的是对 pro_race.sh 的“功能评估”:它是否能实现“没完成指定 Boss 击杀前,角色经验被锁住(无法继续升级)”。
结论(先说人话)
如果你的服务端已正确安装并启用了 mod-individual-progression 模块,那么这个脚本能实现“按阶段锁等级/经验”的效果:每个阶段设置一个上限等级(12/20/30/40/50/60/70/75/80),玩家没完成该阶段要求的 Boss 数量(每档 16 选 2)前,无法突破对应的等级上限。
但它依赖模块侧对以下三张表的支持与钩子逻辑:progression_requirement、progression_meta、progression_level_lock。只要这些表存在且模块代码按预期生效,就能锁住经验/等级;如果你的模块版本没有这些表或未启用相关逻辑,就需要先补齐建表并确认模块配置。
这个脚本是怎么做到“锁经验”的
你脚本生成并导入的 SQL 里,核心是两类数据:
progression_requirement:为每个阶段写入“击杀哪些 Boss”作为解锁条件(前几档按种族/阵营区分,后面统一)。
progression_meta:设置 kill_any_count = 2,即每档从 16 个 Boss 里击杀任意 2 个即可过档。
progression_level_lock:为每个阶段写入 max_level,比如阶段1=12级、阶段2=20级…玩家在未过档前,模块应据此限制继续获得经验/升级。
同时它把 worldserver.conf 的 IP.MaxProgression 设置为 8,意味着阶段上限为 8 档,与上面的 12/20/30/40/50/60/70/75/80 一一对应。
最后重启 ac-worldserver,让配置和新导入的规则生效。
脚本本身的评估
生成 SQL:对 1..8 阶段批量写入 requirement/meta/level_lock,逻辑完整,且先清空老数据(DELETE … WHERE stage BETWEEN 1 AND 9)。
导入 SQL:使用 acore 用户导入 acore_world,适合“只写入数据、不建表”的场景;如果表未建,导入会报错(这类缺表需要提前由模块 SQL 或初始化脚本创建)。
配置与热重载:自动把 IP.MaxProgression 写到 worldserver.conf,并重启 world 进程,步骤正确。
总结:脚本“写规则+触发生效”的链路是合理的,关键取决于模块是否存在并启用了对这三张表的逻辑处理。
要想锁经验,必须满足的前提
模块已编译并加载:mod-individual-progression 必须在源码中启用并编译进 worldserver(启动日志里应能看到模块加载)。
三张表已存在于 acore_world:
progression_requirement
progression_meta
progression_level_lock 这些表通常由模块的 world/base SQL 创建。如果缺表,任何 INSERT 都会失败,自然无法“锁经验”。你之前的报错就来自这一点。
worldserver 配置:
已设置 IP.MaxProgression = 8(脚本会设置)
模块需要的通用开关(例如启用 PlayerSettings)也要满足,否则角色进度不会保存。
账号/权限:
用于导入的 acore 用户需要有写权限(INSERT/DELETE)到 acore_world。
快速验证“锁经验是否生效”
新建一个角色,确保处于阶段1(默认);
把角色练到 12 级附近,然后继续刷怪尝试升到 13:
如果模块逻辑生效,12 级就是阶段1的 max_level,经验/升级会被卡住(到不了 13)。
去打你配置的“12档”Boss 池里的任意 2 个 Boss(脚本里每个阶段要求 2 个):
击杀达成后,应自动提升到下一阶段(阶段2),此时等级上限变为 20,继续刷怪可以突破 12,直到 20 再次被锁。
也可在数据库里观察玩家阶段变动(模块通常将进度存在 PlayerSettings 相关表中),或通过模块提供的 .progression 命令查看当前阶段。
可能的风险点与建议
缺表:如果 progression_requirement / progression_meta / progression_level_lock 任一缺失,你会在导入时报 “Table … doesn’t exist”,锁经验自然无从谈起。建议先执行模块自带的建表 SQL,或我可以为你加一段“缺表自动创建”的兜底逻辑(不改变字段含义,仅保证表存在)。 ...