脚本报错的直接原因是技能名称写错了。你写的 checkskill 攻杀剑法 = 1,但游戏数据库里这个技能的名称是攻杀剑术,不是攻杀剑法。传奇引擎在解析脚本时,会拿你写的技能名称去匹配数据库里的技能记录,名称对不上就找不到目标技能,checkskill 命令直接判定失败,引擎层面抛出参数无效或命令不存在的错误。
攻杀剑术是战士的基础技能,官方名称从来都是剑术,没有剑法这个叫法。你在脚本的 @jineng1 标签里检测的是攻杀剑法,但下面 SKILLLEVEL 执行的时候又写的是攻杀剑术,前后不一致。引擎读到 checkskill 攻杀剑法这一行时,数据库里根本没有这个名字的技能,所以报错。
检查技能等级的格式本身没有问题。CHECKSKILL 技能名称 检测符 等级 是标准写法,检测符支持 <、>、= 三种,用来判断技能等级是否满足条件。你写的 = 1 意思是检测技能等级是否等于1级。问题不在格式上,在技能名称的拼写上。
把脚本里 checkskill 后面的攻杀剑法改成攻杀剑术,这一行就能正常解析。改完之后注意其他地方也要统一。你的 @main 段落里写的是强化攻杀剑术,@jineng1 的 SKILLLEVEL 也写的是攻杀剑术,只有 checkskill 那一行写成了攻杀剑法,属于笔误。
脚本里还有几处逻辑不一致的地方顺便说一下。你检测的是 checkskill 攻杀剑术 = 1,也就是等级等于1级,但报错提示写的是没有3级,检测条件和提示信息对不上。checkgold 写的是 100000 金币,报错提示却写没有100W金币,数字差了一个数量级。这些虽然不会导致脚本报错,但会让玩家看到错误的提示信息,该改的一起改掉。
改完脚本后记得在 M2 控制台重新加载 NPC 脚本,不需要重启整个服务端。在控制台点控制菜单里的重新加载所有 NPC,或者单独重新加载你修改的那个脚本文件,让引擎重新读取一遍。加载后如果 M2 控制台没有红色报错,进游戏点击 NPC 测试一下功能是否正常。
传奇单机技能升级NPC脚本报错 checkskill命令无法检测技能等级原因
来源:
作者:
点击:

