本人架设传奇服务器期间,昨天只修改了一点点脚本相关的内容,没有改动服务器其他配置,第一次启动服务器还正常,第二次启动就直接报错,无法正常开启,报错信息很明确,两个脚本文件出现错误,具体报错如下:脚本错误: �\ 第:181 行: D:\MirServer\Mir200\Envir\Market_Def\老兵/传送员_土城-3.txt;脚本错误: �\ 第:2341 行: D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt。全程直奔主题,恳请各位脚本高手帮忙看看,到底是哪里出错了,怎么解决才能正常启动服务器。
先跟大家说清楚前提,报错前只做了少量脚本修改,没有动服务器的引擎配置、端口、IP,也没有添加新的补丁、修改地图文件,更没有删除任何系统自带的脚本文件,唯一的操作就是修改了Market_Def文件夹下的部分脚本内容,具体修改的就是老兵/传送员_土城-3.txt和QFunction-0.txt这两个文件,因为这两个文件正好就是报错提示里出现的文件,大概率错误就出在我昨天修改的内容上。
首先说一下报错信息里的关键内容,两个报错都有“�\”这个乱码,然后分别标注了具体的脚本文件路径、报错行数,第一个报错是老兵/传送员_土城-3.txt文件的第181行,第二个是QFunction-0.txt文件的第2341行。我自己尝试打开这两个文件,找到对应的行数,但是因为对脚本错误排查不熟练,看不出具体哪里有问题,只能确定错误位置就在这两行,或者这两行附近的脚本内容里。
先补充一下服务器的基础信息,方便高手精准判断,我使用的是常规传奇服务器架设路径,也就是D:\MirServer\Mir200\Envir\Market_Def,这个路径是默认的脚本存放路径,平时所有的NPC脚本、功能脚本都存放在这里,之前一直正常,没有出现过路径错误的问题,所以排除路径设置错误的可能,重点还是脚本内容本身的问题。
先说说第一个报错文件:D:\MirServer\Mir200\Envir\Market_Def\老兵/传送员_土城-3.txt,第181行。这个文件是土城老兵传送员的脚本文件,主要实现老兵的传送功能,比如传送到各个地图、安全区、副本等,我昨天修改的内容,就是给这个脚本添加了一个新的传送地图选项,也就是在老兵的对话列表里,新增了一个传送目的地,修改的时候只添加了几行脚本命令,没有删除原有内容,也没有修改其他传送选项的脚本。
我自己打开这个文件,找到第181行,这一行对应的脚本内容是召唤传送命令相关的,具体是@传送 土城 320 320(大概是这个格式,具体坐标记不太清),我检查了一下,坐标填写的是正确的,土城的坐标范围之内,没有超出有效坐标,但是不知道为什么会报错,也不确定是不是命令格式写错了。
这里有几个疑问,想请教高手,第一,这个文件报错的乱码“�\”是什么意思?是不是脚本里有乱码字符导致的?第二,第181行的传送命令,除了坐标,还有没有其他需要注意的地方?比如命令格式、空格、符号是不是正确?第三,我新增传送选项的时候,有没有可能不小心修改了原有脚本的格式,导致整体脚本紊乱,进而报错?
另外,我尝试过把昨天修改的内容删除,恢复这个文件的原始脚本,然后重启服务器,发现第一个报错消失了,但是第二个报错还在,这就确定了,第一个报错确实是因为我昨天修改老兵传送员脚本导致的,但是具体是修改的内容哪里出错,还是不清楚,删除修改内容后恢复正常,说明原始脚本没有问题,错误就在新增的几行内容里。
再说说第二个报错文件:D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt,第2341行。这个文件是传奇的核心功能脚本文件,里面包含了很多游戏内的功能设置,比如物品使用、技能触发、任务奖励等,作用很关键,我昨天修改的内容,是给这个文件添加了一个物品回收的小功能,就是玩家回收指定物品,可以获得对应的奖励,修改的内容也不多,只有十几行脚本命令。
同样,我打开这个文件,找到第2341行,这一行对应的是物品回收的判断命令,具体是#IF checkitem 疗伤药 10,后面跟着#ACT @给予 金币 100,我检查了一下,物品名称“疗伤药”是正确的,没有错别字,数量也填写正确,判断命令和执行命令的格式,也是按照常规写法来的,没有遗漏#IF、#ACT这些关键字,但是就是报错。
关于这个文件的报错,我也有几个疑问,第一,第2341行的checkitem判断命令,有没有可能格式错误?比如空格不对、关键字写错?第二,我新增的物品回收脚本,有没有可能和文件内原有的其他功能脚本冲突,导致报错?第三,这个文件是核心功能脚本,是不是新增内容的时候,需要添加额外的结束命令,比如break,我没有添加,所以导致脚本报错?
补充一下,我也尝试过删除这个文件里昨天修改的物品回收脚本,恢复原始内容,然后重启服务器,两个报错都消失了,服务器能正常启动,这就完全确定,两个报错都是因为我昨天修改这两个脚本文件导致的,错误根源就在我新增的脚本内容里,但是具体是新增内容的哪里出错,我自己实在排查不出来,只能求助高手。
另外,我发现两个报错都有一个共同的特点,就是开头都有“�\”这个乱码,我不知道这个乱码和脚本错误有没有直接关系,也不知道这个乱码是怎么来的,我修改脚本的时候,用的是记事本打开编辑的,保存的时候也是默认的保存格式,没有修改编码格式,会不会是编码格式的问题导致的乱码和报错?
查了一下相关的基础知识,得知传奇脚本文件的编码格式很关键,一般需要设置为ANSI编码,如果编码格式不对,比如设置成UTF-8、Unicode,就会出现乱码,进而导致脚本错误,服务器无法启动,我不知道我是不是因为这个原因出错的,因为我保存的时候没有特意设置编码,可能不小心改成了其他编码格式。
还有一种可能,就是我修改脚本的时候,不小心输入了多余的空格、符号,或者遗漏了关键字、括号,比如#IF、#ACT后面没有加空格,或者checkitem命令后面的物品名称没有写完整,又或者召唤传送命令的时候,遗漏了坐标、地图名称,这些小细节出错,都可能导致脚本报错,但是我自己检查了好几遍,没有发现这些明显的错误。
再补充几个细节,方便高手进一步判断,第一,我修改脚本用的是系统自带的记事本,没有用专业的脚本编辑工具,会不会是编辑工具的问题,导致脚本内容出错?第二,修改完成后,我是直接保存文件,然后重启服务器的,没有刷新脚本,会不会是没有刷新脚本,导致修改后的内容和原有内容冲突,进而报错?第三,两个报错的行数,是不是都对应着我新增的脚本内容,还是对应着原有脚本内容,我自己区分不太清楚。
现在我把我新增的脚本内容大概描述一下,方便高手帮忙排查,第一个文件(老兵传送员)新增的内容:#SAY 传送至新地图【双击传送】 #IF checklevel 30 #ACT @传送 新地图 350 350 #ELSEACT @messagebox 等级不足30级,无法传送! 大概就是这样的格式,新增了一个等级限制的传送选项,不知道是不是这个格式有问题。
第二个文件(QFunction-0.txt)新增的内容:#IF checkitem 疗伤药 10 checkitem 魔法药 10 #ACT @take 疗伤药 10 @take 魔法药 10 @给予 金币 200 @messagebox 回收成功,获得200金币! #ELSEACT @messagebox 物品数量不足,无法回收! 就是一个简单的双物品回收功能,我觉得格式是正确的,但是不知道为什么会报错。
现在我的核心需求很明确,就是请高手帮忙看看,这两个脚本文件的报错,到底是哪里出错了,具体是新增内容的格式、编码、关键字,还是其他小细节,另外,“�\”这个乱码该怎么解决,还有就是怎么修改这些错误,让服务器能正常启动,不需要多余的理论讲解,只需要精准的错误排查方法和修改步骤。
我自己也尝试过一些基础的排查方法,比如重新编辑新增的脚本内容,检查关键字、空格、坐标、物品名称,但是还是无法解决报错;也尝试过用专业的脚本编辑工具打开文件,查看报错行数的内容,还是看不出具体的错误;还尝试过重新保存文件,设置编码格式为ANSI,但是不知道是不是设置正确了,还是报错。
还有一个疑问,就是我新增的脚本内容,有没有可能和服务器的引擎不兼容,导致报错?我的服务器引擎是常规的传奇引擎,之前添加过类似的传送、物品回收脚本,都能正常使用,没有出现过报错,不知道这次为什么会出现问题,难道是新增内容的命令和引擎不匹配?
另外,我发现,当我只修改其中一个脚本文件,重启服务器,就只会出现对应文件的报错,修改两个,就出现两个报错,这进一步确认了错误就在我新增的内容里,但是我自己实在找不到具体的错误点,只能恳请各位高手出手相助,帮我排查一下这两个脚本文件的报错原因,给出具体的修改方法,万分感谢。
总结一下报错核心信息,方便高手快速定位:1、报错文件1:D:\MirServer\Mir200\Envir\Market_Def\老兵/传送员_土城-3.txt,第181行,新增传送选项脚本后报错;2、报错文件2:D:\MirServer\Mir200\Envir\Market_Def\QFunction-0.txt,第2341行,新增物品回收脚本后报错;3、两个报错均有“�\”乱码;4、删除新增内容后,报错消失,服务器正常启动;5、修改脚本用的是记事本,未特意设置编码。
传奇脚本错误排查 启动服务器报错 2个脚本文件异常解决
来源:
作者:
点击:

