当前位置 : 145z游戏站 | 热血传奇 | 技术教程 | 

传奇MAX引擎卡密脚本输入卡密无反馈,无报错提示代码与调用故障排查详解

热度:
MAX引擎卡密脚本使用CHECKCODELIST读取卡密文本,输入卡密之后没有任何弹窗提示,既不发放元宝,也不弹出卡密错误信息,去掉变量相关代码依旧没有反应,这类故障大多集中在标签调用、命令语法、文件路径、输入变量、脚本加载顺序以及缺少错误分支这几处,MAX引擎对于Quest脚本的语法、路径识别有着严格判定规则,一处不匹配就会出现完全静默无反馈。

[@InPutString98]是输入弹窗返回的触发标签,首先要确认前端NPC对话里调用输入框的命令是否正确,MAX引擎调用InPutString的写法必须写为InPutString98,数字98必须和脚本[@InPutString98]末尾编号完全一致,如果NPC里写的是其他数字,比如InPutString97,输入内容之后不会跳到这个脚本段,脚本完全不会执行,自然不会有任何提示。NPC对话跳转标签书写错误,没有正确指向[@InPutString98],点击按钮不会弹出输入框,或者输入完内容不会把卡密传入s18变量,整个脚本逻辑不会触发。

脚本内使用的<$str(s18)>是接收输入内容的内置变量,MAX引擎读取输入字符串的变量需要确认引擎版本对该变量的支持,部分MAX版本InPutString返回的存储变量编号存在差异。InPutString98对应的接收变量不一定是s18,若变量编号不匹配,输入的卡密内容无法存入s18,CHECKCODELIST拿到空字符串,不会匹配任何卡密文本,不会进入任意#act执行段,脚本执行完毕直接退出,不会弹出任何提示。就算删除变量相关代码,变量来源本身异常,脚本依旧不会触发动作。

文件路径与文本编码是高频故障点,脚本内路径写的是..\QuestDiary\充值\10元.txt,两点代表从M2所在目录向上一层读取目录,要核对QuestDiary文件夹存放位置,文件夹名称不能带多余空格,文件夹和txt文件名内的中文在部分MAX版本会识别异常,中文名称的目录与txt文件会导致CHECKCODELIST读取失败。txt卡密文本的编码格式必须为ANSI,保存为UTF8格式会造成引擎读取卡密列表错乱,无法识别文本内写入的卡密字符。卡密文本内部,每一条卡密单独占一行,末尾不能带有空格、换行多余空白符号,卡密前后有空格会造成匹配失败。如果txt文件不存在,CHECKCODELIST判定直接返回假,不会执行#act,也不会自动抛出错误提示。

脚本缺少卡密不匹配的判定分支,当前脚本只写了三个#IF匹配卡密成功的分支,没有写当输入卡密全部匹配失败时的执行段。输入错误卡密,三个#IF条件全部判定不成立,脚本没有任何执行动作,直接结束,游戏内就不会出现卡密错误提示。MAX引擎脚本从上向下依次判断#IF,全部条件不满足时,没有预设的SENDMSG提示语句,表现就是输入完成后界面没有任何文字反馈。每一段Break只在匹配成功之后跳出脚本,但是无法处理全部条件不成立的场景。

CHECKCODELIST和CLEARCODELIST命令在MAX引擎的语法校验,这条命令作用是检测输入字符串是否存在于卡密列表文本,匹配成功之后使用CLEARCODELIST清除这条卡密,防止重复使用。MAX引擎该命令参数顺序要求严格,变量在前,文件路径在后,参数顺序颠倒会直接判定条件为假。标点符号全部需要英文半角,引号、尖括号写错为中文全角符号,引擎解析脚本直接跳过整段逻辑。脚本加载过程如果存在语法报错,M2日志内会记录加载失败,这段标签直接不注册,输入卡密之后不会执行任何代码,打开M2运行日志,查找Quest加载报错信息,查看是否提示该行命令异常。

脚本加载顺序冲突问题,Quest脚本文件加载是从上到下执行,如果别的脚本也存在[@InPutString98]同名标签,引擎只会读取最先加载的那一段脚本,后面写的卡密脚本会被覆盖,输入卡密跳转至别的空脚本段,没有任何执行内容。脚本文件存放目录必须放在QuestDiary目录下,脚本后缀必须是txt,文件名不能带特殊符号,修改脚本之后,需要在M2执行重载Quest脚本命令,或者重启服务端,只保存文件不重载,引擎依旧读取旧脚本缓存,新修改的脚本不会生效。

输入卡密长度和字符限制,MAX引擎InPutString输入框有字符上限,卡密字符过长会截断输入内容,存入变量的字符串不完整,无法和txt内卡密匹配。卡密包含特殊符号,部分符号会被引擎过滤,传入s18的字符串自动删减,造成匹配失败。角色地图、权限状态限制,如果前端NPC脚本增加地图检测、等级检测,角色不满足条件,点击NPC按钮无法弹出输入框,输入操作不会触发[@InPutString98]脚本。

标签GOTO@卡密跳转校验,成功匹配卡密执行完发放元宝之后,GOTO@卡密会跳转到[@卡密]标签,这个标签需要在同脚本内存在,如果[@卡密]标签缺失,成功触发脚本后跳转失败,也有可能出现提示消息不显示,不过这种情况只会在卡密正确的时候出现,错误卡密依旧是无任何提示。

测试排错步骤,在脚本最顶部[@InPutString98]下方增加SENDMSG5进入卡密检测,用来判断脚本标签有没有成功触发,输入卡密之后如果这条提示都不弹出,代表标签调用失败,问题在NPC的InPutString调用。如果这条提示能够弹出,说明脚本成功进入,故障是卡密匹配逻辑,再依次核对txt路径、文件名、文本编码、卡密内容。新建一个纯英文名称的卡密文本,去除中文目录名称,测试基础匹配,排除中文目录识别异常。查看M2控制台Quest加载日志,确认脚本没有语法报错,标签成功加载。补充#IFNOT的判定分支,当所有卡密条件都不匹配的时候,发送提示文字,实现卡密错误提示。
[顶部]