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

